รับที่อยู่อีเมลจากข้อความ Gmail ที่ได้รับ


33

ฉันจะส่งออกรายการที่มีที่อยู่อีเมลสำหรับทุกคนที่ส่งอีเมลถึงฉันได้อย่างไร ฉันมีข้อความทั้งหมดที่ถูกเก็บถาวร


deep-email-extractor.comเป็นเพื่อนของคุณ ชำระเงิน แต่ปลอดภัยและใช้รหัสผ่านสองขั้นตอน ฉันซื้อมันเมื่อไม่กี่ปีที่ผ่านมาและยังคงใช้มันค่อนข้างมีประโยชน์
Tino Mclaren

ฉันยังไม่สามารถโพสต์คำตอบ (ตัวแทนไม่เพียงพอ) แต่คำตอบของ Jerry Neumann ที่นี่ใน Python ทำงานได้อย่างยอดเยี่ยม!
Basj

คำตอบ:


13

ฉันค่อนข้างแปลกใจกับคำตอบที่ซับซ้อนที่แสดงเครื่องมือพิเศษบางอย่าง! อีเมลทั้งหมดที่คุณได้รับจะมีการเพิ่มที่อยู่ใน "ที่อยู่ติดต่อทั้งหมด" (ตรงข้ามกับ "ที่อยู่ติดต่อของฉัน") ในส่วนที่อยู่ติดต่อของ Gmail ส่งออกสิ่งนั้นและคุณทำเสร็จแล้ว (หรือฉันคิดถึงบางสิ่งในคำถามของคุณ)


สิ่งนี้จะใช้งานได้ดีโดยสมมติว่าบุคคลนั้นยังคงสามารถเข้าถึงบัญชี Gmail ได้มากกว่าที่จะเป็นที่เก็บข้อความถาวร ทางออกที่ดี!
แบรด

ใช่เห็นด้วย แต่มีข้อแม้หนึ่งข้อในการใช้ผู้ติดต่อผ่านเครื่องมือแยกคุณอาจสับสนกับผู้ติดต่อของคุณเราหลายคนทำเมื่อเรา 'จัดระเบียบ' ตามที่ OP แนะนำเมื่อข้อความของเขาถูกเก็บถาวร ณ จุดนี้คุณไม่แน่ใจว่าคุณมีที่อยู่อีเมล 'ทั้งหมด' หรือไม่? ฉันอยู่ในสถานการณ์นี้และต้องดูคำตอบทั้งหมดที่นี่ starbanana หนึ่งค่อนข้างเรียบง่ายและน่าเชื่อถือที่สุด (ใช้สองขั้นตอนการตรวจสอบรหัสผ่านและรหัสผ่านเฉพาะแอป) และการเชื่อมต่อโดยตรงจากพีซีของฉันไปยัง gmail .
Tino Mclaren

2
สิ่งนี้เป็นจริงเฉพาะเมื่อคุณเปิดการตั้งค่านั้นไว้ ในขณะที่เป็นค่าเริ่มต้นคุณสามารถปิดได้อย่างง่ายดาย ดู: หยุด Gmail จากการสร้างโดยอัตโนมัติที่ติดต่อ
เบียร์

28

นี่คือจุดที่พลังของสคริปต์ของ Google Apps เริ่มขึ้นหากคุณวางสคริปต์ต่อไปนี้ลงในสเปรดชีต Google ใหม่ (เครื่องมือเครื่องมือแก้ไขสคริปต์ให้กดที่ไอคอนข้อผิดพลาดเพื่อตรวจสอบสิทธิ์สคริปต์) จากนั้นแผ่นงานใหม่จะถูกสร้างขึ้นโดยอัตโนมัติ ของป้ายกำกับที่มีอยู่ หลังจากนั้นที่อยู่อีเมลจะถูกเพิ่ม

function getEmails() {
  // set spreadsheet and retrieve labels
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var labels = GmailApp.getUserLabels(), emptyLabels = [];

  // itterate through the labels
  for (var i=0; i<labels.length; i++) {

    try {
      // create sheets and clear content
      var sh = ss.getSheetByName(labels[i].getName()) || 
      ss.insertSheet(labels[i].getName(), ss.getSheets().length);
      sh.clear();

      // get all messages
      var eMails = GmailApp.getMessagesForThreads(
        GmailApp.search("label:" + labels[i].getName()))
          .reduce(function(a, b) {return a.concat(b);})
          .map(function(eMails) {
        return eMails.getFrom() 
      });

      // sort and filter for unique entries  
      var aEmails = eMails.sort().filter(function(el,j,a)
        {if(j==a.indexOf(el))return 1;return 0});  

      // create 2D-array
      var aUnique = new Array();  
      for(var k in aEmails) {
        aUnique.push([aEmails[k]]);
      }

      // add data to corresponding sheet
      sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
    } catch (e) {
      emptyLabels.push(labels[i].getName());
    }
   }
   ss.toast("These sheets are empty: " + emptyLabels);
}

ใช้SPLITฟังก์ชั่นเพื่อแยกชื่อเพื่อค้นหารายการที่ซ้ำกัน โฟลเดอร์ระบบจะถูกละเลยเช่นหรือINBOXAll Items

หมายเหตุ: สคริปต์อาจใช้เวลาสักครู่ในการดำเนินการซึ่งแน่นอนขึ้นอยู่กับจำนวนอีเมล


@ MG1 ตรวจสอบสคริปต์และมันล้มเหลวบนป้ายกำกับที่ว่างเปล่า รหัสที่แก้ไขใหม่เพื่อให้ข้อความปรากฏขึ้นโดยกล่าวถึงป้ายกำกับที่ว่างเปล่า
จาค็อบ ม.ค. Tuinstra

7

อัปเดต 2017

Starbanana ได้เปลี่ยนชื่อเป็น deep-email-extractor และมันก็ดูเหมือนจะปรับปรุงใหม่ UI ของแอปและทำให้มันทำงานได้หลายบัญชี

คำตอบเดิม

หากคุณต้องการแอปเดสก์ท็อปที่รวดเร็ว (ไม่ใช่สคริปต์) ให้ลองพิจารณาสิ่งนี้

ฉันได้ค่อนข้างบิตของการค้นหาสำหรับ app ที่ผลงานในระดับฉลากและพบว่าผู้ส่งออกอีเมล์ Gmail จากลึกอีเมลระบาย

มันเป็นแอพที่ต้องจ่ายเงิน (ฉันไม่มีส่วนเกี่ยวข้องกับพวกเขา) แต่มันราคาถูกและคุณจะได้รับการส่งออกที่อยู่อีเมลจากป้ายกำกับที่ระบุหรือบัญชี Gmail ทั้งหมดของคุณ

ดังนั้นในกรณีของคุณใส่อีเมลทั้งหมดของคุณที่ได้รับลงในป้ายกำกับโดยใช้ตัวกรองและใช้ด้านบนเพื่อส่งออกไปยังไฟล์ CSV


1
ทางเลือกที่ถูกกว่าสำหรับผู้ใช้ Mac คือ Email Contacts Extractor ( itunes.apple.com/us/app/email-contacts-extractor/ ...... ) การเปิดเผยอย่างเต็มรูปแบบ: ฉันพัฒนาตัวเองเพราะฉันรู้สึกว่าข้อเสนออื่น ๆ นั้นแพงเกินไปหรือจำเป็นต้องเข้าถึงอีเมลของฉันแบบออนไลน์
hpique

มันจะยอดเยี่ยมถ้าคุณสามารถทำเวอร์ชันสำหรับที่อยู่ 20 แห่งหรือน้อยกว่าเช่นที่พวกเขาทำ
Dan Rosenstark

ตอนนี้starbanana.comก็แยกอีเมลออกจากร่างกายด้วยฉันแค่ลองมันและมัลติเธรดก็ยังทำได้ (15 ป้ายในเวลาเดียวกัน) ประทับใจอย่างรวดเร็วอย่างเหลือเชื่อ
Tino Mclaren

6

ตามคำตอบของ @ jacob-jan-tuinstra ทำการปรับเปลี่ยนเล็กน้อยเพื่อให้เหมาะกับความต้องการของฉันบางทีคนอื่นอาจเห็นว่ามันมีประโยชน์

ใช้การค้นหาไม่แยกตามป้ายกำกับและรวมไปถึงกล่องจดหมายขนาดใหญ่

ส่วนที่ระบุว่า'การค้นหาแบบสอบถามทางอีเมลของคุณไปที่นี่'สามารถถูกเติมเต็มด้วยแบบสอบถามใด ๆ ที่คุณจะใช้ในกล่องจดหมายของคุณ

function getEmails() {
  // set spreadsheet and retrieve labels
  var query = 'YOUR GMAIL SEARCH QUERY GOES HERE',
    ss = SpreadsheetApp.getActiveSpreadsheet(),
    sh = ss.getSheetByName(query) || ss.insertSheet(query, ss.getSheets().length),
    uniqueEmails = {},
    errors = [],
    // max chunk size
    chunkSize = 500,
    currentChunk = 0,
    threads,
    messages,
    i,
    j,
    k,
    msg,
    tos;
  sh.clear();
  while (currentChunk === 0 || threads.length === chunkSize) {
    try {
      // grab threads that match the query one chunk at a time
      threads = GmailApp.search(query, chunkSize * currentChunk, chunkSize);
      // grab corresponding messages from the threads
      messages = GmailApp.getMessagesForThreads(threads);
      for (i = 0; i < messages.length; i++) {
        msg = messages[i];
        for (j = 0; j < msg.length; j++) {
          // get the from
          uniqueEmails[msg[j].getFrom()] = true;
          // get the reply to
          uniqueEmails[msg[j].getReplyTo()] = true;
          // grab from the to field as well
          // this has a bug for people with commas in their names
          // tos = msg[j].getTo().split(',');
          // for (k = 0; k < tos.length; k++) {
          //  uniqueEmails[tos[k]] = true;
          // }
        }
      }
      currentChunk += 1;
    } catch (e) {
      errors.push(e);
    }
  }
  // create 2D-array
  var aUnique = [];
  for (k in uniqueEmails) {
    aUnique.push([k]);
  }

  // add data to corresponding sheet
  sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
}

คำแนะนำของคุณทำงานได้อย่างสมบูรณ์แบบสำหรับฉันขอบคุณ! คุณสามารถเพิ่มตัวเลือกในการดึงที่อยู่อีเมลจากเนื้อหาของอีเมลได้เช่นกัน ขอบคุณ

5

แอพต่อไปนี้ฟรีและใช้งานได้อย่างสวยงาม!

http://www.labnol.org/internet/extract-gmail-addresses/28037/


อีกหนึ่งยูทิลิตี้ที่ยอดเยี่ยม แต่ฉันยังไม่ได้ลอง
Moiz Tankiwala

1
ฉันจะไม่เชื่อถือ 'แอปออนไลน์' ใด ๆ ดังนั้นจึงมีการหลอกลวงจำนวนมากที่มีการยกเลิก / pw และที่อยู่อีเมลของคุณทั้งหมด ไปกับแอพที่ติดตั้ง - การเชื่อมต่อ HTTPS
Tino Mclaren

ฉันยอมรับว่าคุณต้องระมัดระวัง แต่คนที่อยู่เบื้องหลัง Labnol เป็นคนดีที่ได้รับการตีพิมพ์สิ่งที่เป็นประโยชน์มากมาย หากคุณไม่ไว้ใจ แต่เป็นเทคนิคเล็ก ๆ น้อย ๆ คุณสามารถไปและหยิบรหัส src ที่เขาเชื่อมโยงไปยังจากบทความนั้นและเผยแพร่ของคุณเอง: ctrlq.org/code/…
RedYeti

5

สับสน / ไม่ใช่เทคนิค / ไม่รู้จะทำอย่างไร?

ลองทำตามขั้นตอนต่อไปนี้และขอบคุณhttps://webapps.stackexchange.com/a/47930/6329

ขั้นตอนที่ 1. drive.google.com

ขั้นตอนที่ 2 สเปรดชีตใหม่

ขั้นตอนที่ 3 เครื่องมือ> เครื่องมือแก้ไขสคริปต์

ขั้นตอนที่ 4. ปิดหน้าต่างแนะนำขึ้นมาด้วยปุ่มปิด

ขั้นตอนที่ 5. วางรหัส

function getEmails() { 
  // http://stackoverflow.com/a/12029701/1536038  
  // get all messages      
  var eMails = GmailApp.getMessagesForThreads(
    GmailApp.search('after:2012/1/14 before:2013/8/15'))
      .reduce(function(a, b) {return a.concat(b);})
      .map(function(eMails) {
    return eMails.getFrom() 
  });

  // sort and filter for unique entries  
  var aEmails = eMails.sort().filter(function(el,j,a)
    {if(j==a.indexOf(el))return 1;return 0});  

  // create 2D-array
  var aUnique = new Array();  
  for(var k in aEmails) {
    aUnique.push([aEmails[k]]);
  }

  // add data to sheet
  SpreadsheetApp.getActiveSheet().getRange(1, 1, aUnique.length, 1)
    .setValues(aUnique);
} 

ขั้นที่ 6. วางเคอร์เซอร์ไว้บนคำว่า "getEmails" ในบรรทัดแรก

ขั้นตอนที่ 7 คลิกปุ่มเล่นสามเหลี่ยมด้านบนในแถบเมนู

ขั้นตอนที่ 8 มันขอให้คุณรับรองความถูกต้องทำ

ขั้นตอนที่ 9. คลิกที่ปุ่มเล่นอีกครั้งหากยังไม่ได้ทำงาน

ขั้นตอนที่ 10 ตรวจสอบสเปรดชีตดั้งเดิมของคุณและจะมีอีเมล


4
  1. นำทางไปยังรายการ เลือกช่องทำเครื่องหมายตัวเลือกแบบเลื่อนลงและเลือกทั้งหมด
  2. [ที่ด้านบนคุณจะได้รับตัวเลือกไฮเปอร์ลิงก์เพื่อเลือกการสนทนาทั้งหมดในรายการของคุณ คลิกเลย] อัปเดต: ขั้นตอนนี้ใช้ไม่ได้ผลจะทำให้คุณทำ 25 ครั้งต่อคนงี่เง่า!
  3. จากนั้นไปที่เมนูแบบเลื่อนลงเพิ่มเติมและเลือกตัวกรองข้อความเช่นนี้
  4. ในช่องโต้ตอบตัวกรองช่องข้อความจากจะถูกเน้น เหล่านี้ล้วนมาจากที่อยู่
  5. คัดลอก
  6. วางลงในโปรแกรมแก้ไข HTML เช่น Notepad ++ หรือ Visual Studio
  7. ตอนนี้คุณก็ต้องทำค้นหาและแทนที่คำหรือแทนที่ด้วยหรือ;,
  8. จัดเรียงรายการใหม่และวางลงในข้อความของคุณ

ดีกว่าที่จะเพียงแค่ให้คำตอบ ไม่จำเป็นต้องมีเรื่องราวเบื้องหลัง :-)
Yosi Mor

4

วิธีเดียวที่จะทำเช่นนี้คือ

  1. ส่งออกทั้งหมดเป็น. txt (ดู: ส่งออกข้อความ Gmail เป็นไฟล์ข้อความหรือ HTML )
  2. วนซ้ำทั้งหมดและ grep "จาก:" ในฐานข้อมูลแยกต่างหาก

หมายเหตุ: หากคุณใช้ imapsize (ฟรี) สำหรับขั้นตอนที่ 1 ให้บันทึกข้อมูลสำรองเป็น "% FROM - ผู้ส่งอีเมล" และคุณมีข้อมูลสำรองในไดเรกทอรีของคุณ


ฉันกลัวสิ่งนั้น ขอบคุณนะ!
แบรด

1

ฉันคิดหาวิธีการนี้สำหรับผู้ใช้ Mac ที่ใช้ Mac Mail และสมุดที่อยู่โดยไม่จำเป็นต้องดาวน์โหลดซอฟต์แวร์เพิ่มเติม ใช้ได้กับ Mac Mail 4.6 และ Address Book 5.0.3 ไม่แน่ใจว่าใช้ได้กับเวอร์ชั่นอื่นหรือไม่ สิ่งนี้อาจทำงานคล้ายกับโปรแกรมอีเมล IMAP อื่น ๆ เช่น Thunderbird แต่ฉันไม่สามารถรับรองได้

นี่คือขั้นตอน:

  1. ตั้งค่าบัญชี Gmail ของคุณใน Mac Mail ตรวจสอบว่าเซิร์ฟเวอร์เมลที่เข้ามาคือ "imap.gmail.com" คุณสามารถค้นหาได้ภายใต้แถบเครื่องมือ> จดหมาย> การตั้งค่า> บัญชี
  2. ใน Gmail ให้สร้าง Label สำหรับอีเมลที่คุณต้องการดึงที่อยู่อีเมล
  3. ใน Gmail ติดป้ายกำกับอีเมลทั้งหมดที่คุณต้องการตามป้ายกำกับด้านบน
  4. ใน Gmail ไปที่การตั้งค่า> ป้ายกำกับและทำเครื่องหมายที่ช่องสำหรับป้ายกำกับใหม่ที่คุณสร้างขึ้นซึ่งระบุว่า "แสดงใน IMAP"
  5. รีสตาร์ท Mac Mail เพื่อให้ Gmail Label ใหม่ตรงกัน
  6. เปิดสมุดรายชื่อ หากคุณใช้สมุดที่อยู่สำหรับผู้ติดต่อของคุณคุณจะต้องสำรองข้อมูลผู้ติดต่อของคุณเพราะคุณต้องลบผู้ติดต่อทั้งหมดในสมุดรายชื่อ ฉันเชื่อว่าคุณสามารถทำได้ด้วยไฟล์> ส่งออก> ที่เก็บสมุดที่อยู่ ฉันไม่ได้ใช้สมุดที่อยู่นอกเหนือจากการส่งออกอีเมล Gmail ดังนั้นฉันจึงไม่สามารถให้คำแนะนำที่ดีเกี่ยวกับเรื่องนี้ได้ ลบผู้ติดต่อในสมุดที่อยู่ในความเสี่ยงของคุณเอง
  7. ในสมุดรายชื่อลบผู้ติดต่อของคุณทั้งหมด คุณควรทำสิ่งนี้ได้โดยเลือกผู้ติดต่อหนึ่งรายกด Command + a และกดปุ่มลบ
  8. ใน Mac Mail ให้ค้นหาโฟลเดอร์ IMAP ของคุณ ควรมีคอลัมน์ทางด้านซ้ายของหน้าต่างพร้อมกล่องจดหมายทั้งหมดของคุณ หากไม่ไปที่แถบเครื่องมือด้านบนเลือกมุมมอง> แสดงกล่องจดหมายหรือกด Command + Shift + M โฟลเดอร์ IMAP จะอยู่ที่ด้านล่างของคอลัมน์ด้านล่าง "เตือนความจำ", "RSS", "บน Mac ของฉัน" เป็นต้นคุณจะเห็นชื่อบัญชี Gmail ที่คุณตั้งไว้ก่อนหน้านี้ด้วยลูกศรแบบเลื่อนลงที่ด้านซ้าย
  9. ใน Mac Mail ให้คลิกลูกศรดรอปดาวน์ถัดจากกล่องจดหมายของคุณ นี่จะแสดงรายการโฟลเดอร์และควรแสดงป้ายกำกับที่คุณสร้างใน Gmail เป็นโฟลเดอร์ เลือกโฟลเดอร์นี้โดยคลิกที่มัน
  10. ใน Mac Mail ในหน้าต่างข้อความซึ่งตอนนี้ควรแสดงอีเมลทั้งหมดของคุณสำหรับป้ายกำกับ Gmail ของคุณ) ให้เลือกอีเมลทั้งหมดในรายการ ไปที่แถบเครื่องมือด้านบนให้เลือกข้อความ> เพิ่มผู้ส่งในสมุดที่อยู่หรือกดShift+ +Command Yผู้ส่งทั้งหมดสำหรับป้ายกำกับ Gmail ของคุณควรอยู่ในสมุดที่อยู่
  11. ในสมุดรายชื่อตอนนี้คุณสามารถส่งออกผู้ติดต่อเป็น vCards เพื่อใช้ในโปรแกรมใดก็ได้ที่คุณต้องการโดยไปที่แถบเครื่องมือและเลือกไฟล์> ส่งออก> ส่งออก vCards คุณสามารถนำเข้ากลับสู่ Google Contacts ได้ หากคุณต้องการไฟล์ CSV โชคไม่ดีที่คุณจะต้องนำเข้า vCards ไปยังโปรแกรมอื่น (Google Contacts ทำงานได้) และส่งออกอีกครั้งเนื่องจากคุณไม่สามารถส่งออก CSV จาก Mac Mail ได้

หวังว่านี่จะช่วยได้! มันค่อนข้างยุ่งยาก แต่เหมาะสำหรับฉันและค่อนข้างง่ายหลังจากคุณทำสองสามครั้ง


0

MineMyMailดึงข้อความทั้งหมดของคุณผ่าน IMAP แล้วแยกที่อยู่อีเมลออก

คุณสามารถเลือกโฟลเดอร์ที่ค้นหาได้โดยเลือกโฟลเดอร์ / ป้ายกำกับ "จดหมายที่ส่งแล้ว"


MineMyMail เชื่อถือได้หรือไม่? ฉันไปที่ไซต์ของพวกเขาและ Chrome เตือนฉันว่าใบรับรองหมดอายุ การไม่มีใบรับรอง HTTPS ที่เหมาะสมและการขอให้ผู้ใช้ป้อนชื่อผู้ใช้และรหัสผ่าน Gmail ของพวกเขานั้นน่ากลัวอย่างแน่นอน มันทำให้ฉันสงสัยว่าเว็บไซต์อาจแยกอีเมลและใช้สำหรับการส่งสแปมของพวกเขาเองหรือขายให้กับผู้ส่งอีเมลขยะอื่น ๆ
Moiz Tankiwala

0

ผู้ส่งออกที่อยู่ IMAPเป็น Mac App ที่เชื่อมต่อกับบัญชีอีเมล IMAP ใด ๆ และแยกที่อยู่ผู้ส่งทุกรายจากโฟลเดอร์ / ป้ายกำกับที่คุณตั้งไว้ก่อนหน้านี้ ในความเป็นธรรมฉันต้องเน้นว่ามันถูกพัฒนาโดย บริษัท ของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.