Nhận địa chỉ email từ tin nhắn Gmail nhận được


33

Làm cách nào tôi có thể xuất danh sách chứa địa chỉ e-mail cho mọi người đã gửi e-mail cho tôi? Tôi có tất cả các tin nhắn được lưu trữ.


deep-email-extractor.com là bạn của bạn. Được trả tiền nhưng an toàn, bảo mật và sử dụng mật khẩu hai bước. Tôi đã mua nó vài năm trước và vẫn sử dụng nó, khá tiện dụng
Tino Mclaren

Tôi chưa thể đăng câu trả lời (chưa đủ đại diện), nhưng câu trả lời này của Jerry Neumann ở đây trong Python hoạt động tuyệt vời!
Basj

Câu trả lời:


13

Tôi khá ngạc nhiên bởi tất cả các câu trả lời phức tạp ngụ ý một số công cụ bổ sung! Mỗi email bạn nhận được có địa chỉ được thêm vào "Tất cả danh bạ" (trái ngược với "Danh bạ của tôi") trong phần Danh bạ của Gmail. Xuất cái đó và bạn đã hoàn thành (hoặc tôi đã bỏ lỡ điều gì đó trong câu hỏi của bạn).


Điều đó sẽ rất tốt, giả sử người đó vẫn có quyền truy cập vào tài khoản Gmail chứ không phải là một kho lưu trữ thư đơn giản. Giải pháp tốt!
Brad

Có đồng ý nhưng có một cảnh báo khi sử dụng danh bạ trên các công cụ giải nén, bạn có thể đã nhầm lẫn với danh bạ của mình, rất nhiều người trong chúng ta làm khi chúng ta 'dọn dẹp' như OP gợi ý khi tin nhắn của anh ta được lưu trữ. Tại thời điểm này, bạn hiện không chắc chắn liệu bạn có 'tất cả' địa chỉ email của mình không? Tôi đã ở trong tình huống này và đã xem xét tất cả các câu trả lời ở đây, starbanana khá đơn giản và thanh lịch nhất (nó sử dụng hai bước xác thực và mật khẩu ứng dụng cụ thể) và kết nối trực tiếp từ PC của tôi để gmail để không có người đàn ông nào ở giữa .
Tino Mclaren

2
Điều này chỉ đúng nếu bạn bật cài đặt đó. Mặc dù là mặc định, bạn có thể dễ dàng tắt nó đi. Xem: Ngừng Gmail tự động tạo danh bạ
ale

28

Đây là nơi phát huy sức mạnh của Google Apps Script. Nếu bạn dán đoạn mã sau vào Bảng tính Google mới (Công cụ, Trình chỉnh sửa tập lệnh, nhấn biểu tượng lỗi để xác thực tập lệnh), thì các trang tính mới sẽ được tạo tự động dựa trên số của nhãn hiện tại. Sau đó, các địa chỉ email sẽ được thêm vào.

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);
}

Sử dụng SPLITchức năng để trích xuất tên để tìm bản sao. Thư mục hệ thống được bỏ qua, như INBOXhoặc All Items.

Lưu ý: tập lệnh có thể mất một chút thời gian để thực thi, tất nhiên, điều này phụ thuộc vào số lượng e-mail


@ MG1 đã kiểm tra tập lệnh và nó bị lỗi trên các nhãn trống. Mã sửa đổi để thông báo sẽ xuất hiện, đề cập đến các nhãn trống.
Jacob Jan Tuinstra

7

Cập nhật 2017

Starbanana đã đổi tên thành trình trích xuất email sâu và có vẻ như đã tân trang lại Giao diện người dùng ứng dụng và làm cho nó hoạt động trên nhiều tài khoản (phát hiện ra rằng vừa đăng nhập vào ứng dụng của tôi), đã thay đổi liên kết bên dưới để phản ánh điều này.

Câu trả lời gốc

Nếu bạn cần một ứng dụng máy tính để bàn nhanh (không phải là tập lệnh) thì hãy xem xét điều này.

Tôi đã thực hiện khá nhiều việc tìm kiếm một ứng dụng hoạt động ở cấp độ nhãn và tìm thấy Trình xuất email của Gmail từ trình trích xuất email sâu .

Đó là một ứng dụng trả phí (tôi không có gì để làm với họ) nhưng nó rẻ và bạn có thể xuất địa chỉ email từ các nhãn cụ thể hoặc tất cả tài khoản Gmail của bạn.

Vì vậy, trong trường hợp của bạn, hãy đặt tất cả email của bạn nhận được vào nhãn bằng bộ lọc và sử dụng ở trên để xuất sang tệp CSV.


1
Một lựa chọn rẻ hơn cho người dùng Mac là Email Extractor Extractor ( itunes.apple.com/us/app/email-contacts-extractor/ tựa ). Tiết lộ đầy đủ: Tôi tự phát triển nó vì tôi cảm thấy các dịch vụ khác quá đắt hoặc yêu cầu truy cập trực tuyến vào email của mình.
hpique

Sẽ thật tuyệt vời nếu bạn có thể làm một phiên bản cho 20 địa chỉ hoặc ít hơn, giống như họ làm.
Dan Rosenstark

starbanana.com bây giờ cũng trích xuất các email ra khỏi cơ thể, tôi chỉ thử nó và đa luồng cũng (15 nhãn cùng lúc) cực kỳ nhanh cũng rất ấn tượng.
Tino Mclaren

6

Dựa trên câu trả lời của @ jacob-jan-tuinstra. Thực hiện một số sửa đổi nhỏ cho phù hợp với nhu cầu của tôi có lẽ những người khác sẽ thấy nó hữu ích.

Sử dụng tìm kiếm, không chia tay bởi các nhãn và cũng không tìm kiếm các hộp thư đến lớn.

Phần có nội dung 'TÌM KIẾM GMAIL CỦA BẠN TÌM KIẾM TẠI ĐÂY' có thể được điền vào bất kỳ truy vấn nào bạn sẽ sử dụng trong hộp thư đến của mình.

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);
}

Scrpit của bạn hoạt động hoàn hảo cho tôi, cảm ơn! bạn có thể thêm tùy chọn để lấy địa chỉ email từ phần thân của email không, được đánh giá cao. cảm ơn.

5

Các ứng dụng sau đây là miễn phí và hoạt động đẹp!

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


Một tiện ích tuyệt vời khác. Nhưng tôi vẫn chưa thử nó.
Moiz Tankiwala

1
Tôi KHÔNG BAO GIỜ tin tưởng bất kỳ 'ứng dụng trực tuyến' nào, vì vậy có rất nhiều trò gian lận trên mạng đã làm cho un / pw và tất cả các địa chỉ email của bạn. Đi với ứng dụng đã cài đặt - kết nối HTTPS.
Tino Mclaren

Tôi đồng ý bạn cần thận trọng nhưng anh chàng đứng sau Labnol là một chàng trai tốt, người đã xuất bản rất nhiều thứ thực sự hữu ích. Nếu bạn không tin tưởng nó nhưng có một chút kỹ thuật, bạn luôn có thể lấy mã src mà anh ấy liên kết đến từ bài viết đó và tự cuộn: ctrlq.org/code/iêu
RedYeti

5

Bối rối / phi kỹ thuật / Không có ý tưởng để làm gì?

Hãy thử từng bước một và cảm ơn https://webapps.stackexchange.com/a/47930/6329

bước 1. drive.google.com

bước 2. bảng tính mới

bước 3. công cụ> biên tập kịch bản

Bước 4. đóng phần giới thiệu bật lên bằng nút đóng

bước 5. dán mã

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);
} 

bước 6. định vị con trỏ của bạn trong từ "getEmails" trong dòng đầu tiên

Bước 7. nhấp vào nút tam giác phát ở trên trong thanh menu

Bước 8. Nó yêu cầu bạn xác thực, làm điều đó

Bước 9. nhấp vào nút phát lại nếu nó chưa chạy

bước 10. kiểm tra bảng tính gốc của bạn và nó sẽ có email.


4
  1. Điều hướng đến danh sách. Chọn thả xuống tùy chọn hộp kiểm, và chọn tất cả.
  2. [Ở đầu bạn sẽ có tùy chọn siêu liên kết để chọn tất cả các cuộc hội thoại trong danh sách của bạn. Nhấp vào nó.] Cập nhật: Bước này không hoạt động, nó sẽ chỉ cho phép bạn thực hiện 25 lần một lần, bummer!
  3. Sau đó vào phần thả xuống Thêm và chọn các thông báo bộ lọc như thế này.
  4. Trong hộp thoại bộ lọc, hộp văn bản Từ sẽ được tô sáng. Đây là tất cả các địa chỉ từ.
  5. Sao chép nó.
  6. Dán nó vào một trình soạn thảo HTML như Notepad ++ hoặc Visual Studio.
  7. Bây giờ bạn chỉ cần thực hiện tìm kiếm và thay thế từ HOẶC, thay thế bằng ;hoặc ,.
  8. Ghi lại danh sách và dán vào tin nhắn của bạn.

Tốt hơn là chỉ đưa ra câu trả lời. Không cần câu chuyện đằng sau nó. :-)
Yosi Mor

4

Cách duy nhất để làm điều này là

  1. Xuất tất cả dưới dạng .txt (xem: Xuất thư Gmail sang tệp văn bản hoặc HTML )
  2. Lặp lại tất cả các dòng và grep "From:" trong một cơ sở dữ liệu riêng biệt.

Lưu ý: nếu bạn sử dụng imapsize (miễn phí) cho bước 1 thì hãy lưu các bản sao lưu dưới dạng "% TỪ - Người gửi email" và bạn có chúng trong tầm nhìn rõ ràng trong thư mục của bạn.


Tôi đã lo sợ về nó. Cảm ơn mặc dù!
Brad

1

Tôi đã tìm ra một cách để làm điều này cho người dùng Mac bằng Mac Mail và sổ địa chỉ mà không cần phải tải xuống phần mềm bổ sung. Điều này hoạt động với Mac Mail 4.6 và Sổ địa chỉ 5.0.3. Không chắc chắn nếu nó hoạt động cho các câu khác hay không. Điều này có thể hoạt động tương tự cho các chương trình Email IMAP khác như Thunderbird, nhưng tôi không thể đảm bảo điều đó.

Dưới đây là các bước:

  1. Thiết lập tài khoản Gmail của bạn trong Mac Mail. Đảm bảo rằng máy chủ thư đến là "imap.gmail.com" Bạn có thể tìm thấy mục này trong thanh công cụ> Thư> Tùy chọn> Tài khoản.
  2. Trong Gmail, tạo Nhãn cho các email mà bạn muốn trích xuất địa chỉ email.
  3. Trong Gmail, hãy gắn nhãn tất cả các email bạn muốn cho mỗi Nhãn ở trên.
  4. Trong Gmail, đi tới Cài đặt> Nhãn và đánh dấu vào ô cho Nhãn mới mà bạn đã tạo có nội dung "Hiển thị trong IMAP".
  5. Khởi động lại Mac Mail để Nhãn Gmail mới đồng bộ hóa.
  6. Mở sổ địa chỉ. Nếu bạn sử dụng Danh bạ cho các liên hệ của mình, bạn sẽ cần sao lưu danh bạ của mình vì bạn cần xóa tất cả các liên hệ trong Danh bạ. Tôi tin rằng bạn có thể làm điều này với Tệp> Xuất> Lưu trữ Sổ Địa chỉ. Tôi không sử dụng Sổ địa chỉ ngoài việc xuất email Gmail vì vậy tôi không thể đưa ra lời khuyên tốt về việc này. Xóa danh bạ liên lạc có nguy cơ của riêng bạn.
  7. Trong Sổ địa chỉ, xóa tất cả các địa chỉ liên lạc của bạn. Bạn sẽ có thể làm điều này bằng cách chọn một liên hệ, nhấn Command + a và nhấn phím xóa.
  8. Trong Mac Mail, tìm thư mục IMAP của bạn. Cần có một cột ở bên trái của cửa sổ với tất cả Hộp thư của bạn. Nếu không đi đến thanh công cụ trên cùng, chọn Xem> Hiển thị Hộp thư hoặc nhấn Command + Shift + M. Thư mục IMAP sẽ ở phía dưới cùng của cột bên dưới "Nhắc nhở", "RSS", "Trên máy Mac của tôi", v.v. Bạn sẽ thấy Tên tài khoản Gmail bạn đã thiết lập trước đó bằng mũi tên thả xuống ở bên trái.
  9. Trong Mac Mail, nhấp vào mũi tên thả xuống bên cạnh hộp thư của bạn. Điều này sẽ hiển thị cho bạn một danh sách các thư mục và sẽ hiển thị Nhãn bạn đã tạo trong Gmail dưới dạng thư mục. Chọn thư mục này bằng cách nhấp vào nó.
  10. Trong Mac Mail trong cửa sổ Tin nhắn, giờ sẽ hiển thị tất cả các email của bạn cho Nhãn Gmail của bạn), chọn tất cả các email trong danh sách. Chuyển đến thanh công cụ trên cùng, chọn Tin nhắn> Thêm người gửi vào Sổ địa chỉ hoặc bấm Shift+ Command+ Y. Tất cả những người gửi cho Nhãn Gmail của bạn bây giờ sẽ có trong Sổ địa chỉ.
  11. Trong Sổ địa chỉ, giờ đây bạn có thể xuất danh bạ dưới dạng vCards để sử dụng trong bất kỳ chương trình nào bạn thích bằng cách vào thanh công cụ và chọn Tệp> Xuất> Xuất vCards. Bạn thậm chí có thể nhập trở lại vào Danh bạ Google. Nếu bạn cần một tệp CSV, thật không may, bạn sẽ cần nhập vCards vào một chương trình khác (Danh bạ Google hoạt động) và xuất lại vì bạn không thể xuất CSV từ Mac Mail.

Hi vọng điêu nay co ich! Nó hơi cồng kềnh, nhưng làm việc với tôi và khá dễ dàng sau khi bạn làm điều đó một vài lần.


0

MineMyMail tìm nạp tất cả các tin nhắn của bạn thông qua IMAP và sau đó trích xuất các địa chỉ email từ nó.

Bạn có thể chọn thư mục mà nó tìm kiếm bằng cách chọn thư mục / nhãn "Thư đã gửi".


MineMyMail có đáng tin không? Tôi đã truy cập trang web của họ và Chrome đã cảnh báo tôi rằng chứng chỉ đã hết hạn. Không có chứng chỉ HTTPS thích hợp và yêu cầu người dùng nhập tên người dùng và mật khẩu Gmail của họ chắc chắn là đáng sợ. Nó khiến tôi nghi ngờ rằng trang web có thể trích xuất các email và sử dụng nó để gửi thư rác hoặc bán cho những kẻ gửi thư rác khác.
Moiz Tankiwala

0

Trình xuất địa chỉ IMAP là Ứng dụng Mac kết nối với bất kỳ tài khoản email IMAP nào và trích xuất mọi địa chỉ người gửi, cũng từ các thư mục / nhãn bạn đã đặt trước đó. Trong tất cả các công bằng, tôi phải nhấn mạnh rằng nó được phát triển bởi công ty của tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.