Dapatkan alamat email dari pesan-pesan Gmail yang diterima

33

Bagaimana saya bisa mengekspor daftar yang berisi alamat email untuk semua orang yang mengirimi saya email? Saya memiliki semua pesan yang diarsipkan.

Brad
sumber
deep-email-extractor.com adalah teman Anda. Dibayar untuk tetapi aman, aman dan menggunakan kata sandi dua langkah. Saya membelinya beberapa tahun yang lalu dan masih menggunakannya, cukup berguna
Tino Mclaren
Saya belum bisa mengirim jawaban (tidak cukup perwakilan), tetapi jawaban Jerry Neumann di sini di Python bekerja sangat baik!
Basj

Jawaban:

13

Saya cukup terkejut dengan semua jawaban rumit yang menyiratkan beberapa alat tambahan! Setiap email yang Anda terima memiliki alamatnya yang ditambahkan ke "Semua kontak" (sebagai lawan dari "Kontak Saya") di bagian Kontak di Gmail. Ekspor yang itu dan Anda sudah selesai (atau saya melewatkan sesuatu di pertanyaan Anda).

Patrick Honorez
sumber
Itu akan bekerja dengan baik, dengan asumsi orang tersebut masih memiliki akses ke akun Gmail daripada arsip pesan sederhana. Solusi bagus!
Brad
Ya setuju tetapi ada satu peringatan untuk menggunakan kontak di atas alat ekstrak, Anda mungkin telah mengacaukan kontak Anda, banyak dari kita lakukan ketika kita 'membereskan' seperti yang disarankan OP ketika pesannya diarsipkan. Pada titik ini Anda sekarang tidak yakin apakah Anda memiliki 'semua' alamat email Anda? Saya berada dalam situasi ini dan setelah melihat semua jawaban di sini, starbanana adalah yang paling sederhana dan paling dapat dipercaya (menggunakan dua langkah auth dan kata sandi khusus aplikasi) dan koneksi langsung dari PC saya ke gmail sehingga tidak ada orang di tengah mendengarkan .
Tino Mclaren
2
Ini hanya benar jika Anda mengaktifkan pengaturan itu. Meskipun default, Anda dapat dengan mudah mematikannya. Lihat: Hentikan Gmail dari membuat kontak secara otomatis
ale
28

Di sinilah kekuatan Skrip Google Apps masuk. Jika Anda menempelkan skrip berikut ke dalam Google Spreadsheet baru (Tools, Editor skrip, tekan ikon bug untuk mengautentikasi skrip), maka lembaran baru akan secara otomatis dibuat berdasarkan nomor label yang ada. Setelah itu, alamat email akan ditambahkan.

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

Gunakan SPLITfungsi untuk mengekstrak nama untuk menemukan duplikat. Folder sistem diabaikan, seperti INBOXatau All Items.

Catatan: skrip mungkin memerlukan beberapa waktu untuk dieksekusi, yang tentu saja tergantung pada jumlah surel

Jacob Jan Tuinstra
sumber
@ MG1 memeriksa skrip dan gagal pada label kosong. Kode revisi sehingga pesan akan muncul, menyebutkan label kosong.
Jacob Jan Tuinstra
7

Perbarui 2017

Starbanana telah mengubah nama mereka menjadi deep-email-extractor dan itu juga tampak seperti mengubah UI Aplikasi dan membuatnya berfungsi pada banyak akun (ditemukan baru saja masuk ke aplikasi saya), mengubah tautan di bawah untuk mencerminkan hal ini.

Jawaban Asli

Jika Anda memerlukan aplikasi desktop cepat (bukan skrip), pertimbangkan ini.

Saya melakukan sedikit mencari aplikasi yang bekerja di tingkat label dan menemukan Eksportir Email Gmail dari deep-email-extractor .

Ini adalah aplikasi berbayar (saya tidak ada hubungannya dengan mereka) tapi itu murah dan Anda bisa mengekspor alamat email dari label tertentu atau semua akun Gmail Anda.

Jadi, dalam kasus Anda, letakkan semua email Anda yang diterima ke dalam label menggunakan filter dan gunakan yang di atas untuk mengekspor ke file CSV.

LenPopLilly
sumber
1
Alternatif yang lebih murah untuk pengguna Mac adalah Extractor Kontak Email ( itunes.apple.com/us/app/email-contacts-extractor/… ). Pengungkapan penuh: Saya mengembangkannya sendiri karena saya merasa penawaran lainnya terlalu mahal atau memerlukan akses online ke email saya.
hpique
Akan luar biasa jika Anda bisa melakukan versi untuk 20 alamat atau kurang, seperti yang mereka lakukan.
Dan Rosenstark
starbanana.com sekarang mengekstrak email dari tubuh juga, saya hanya mencobanya dan multi-threading juga (tidak 15 label pada saat yang sama) sangat cepat terkesan.
Tino Mclaren
6

Didasarkan pada jawaban @ jacob-jan-tuinstra. Membuat beberapa modifikasi kecil yang sesuai dengan kebutuhan saya mungkin orang lain akan merasa berguna.

Menggunakan pencarian, tidak terpecah oleh label dan juga melakukan chunking untuk inbox besar.

Bagian yang mengatakan 'PENCARIAN GMAIL ANDA QUERY GOES HERE' dapat diisi dengan pertanyaan apa pun yang akan Anda gunakan di kotak masuk Anda.

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);
}
varblob
sumber
pakaianmu bekerja sempurna untukku, terima kasih! Anda dapat menambahkan opsi untuk mengambil alamat email dari badan email juga, sangat kami hargai. Terima kasih.
5

Aplikasi berikut ini gratis dan bekerja dengan indah!

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

Nyamuk
sumber
Utilitas hebat lainnya. Tetapi saya belum mencobanya.
Moiz Tankiwala
1
Saya TIDAK AKAN PERNAH mempercayai 'aplikasi on-line' apa pun, begitu banyak penipuan di luar sana yang menyebabkan un / pw dan semua alamat email Anda. Pergi dengan aplikasi yang diinstal - koneksi HTTPS.
Tino Mclaren
Saya setuju Anda harus berhati-hati tetapi orang di belakang Labnol adalah orang baik yang menerbitkan banyak hal yang sangat membantu. Jika Anda tidak mempercayainya tetapi sedikit teknis Anda selalu dapat pergi dan mengambil kode src yang dia tautkan
RedYeti
5

Bingung / Non-Teknis / Tidak Tahu apa yang harus dilakukan?

Coba langkah demi langkah berikut, dan terima kasih kepada https://webapps.stackexchange.com/a/47930/6329

langkah 1. drive.google.com

langkah 2. spreadsheet baru

langkah 3. alat> editor skrip

langkah 4. tutup pengantar yang muncul dengan tombol tutup

langkah 5. rekatkan dalam kode

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

langkah 6. posisikan kursor Anda di dalam kata "getEmails" di baris pertama

langkah 7. klik tombol play triangle di atas di menu bar

langkah 8. Ia meminta Anda untuk mengotentikasi, lakukan itu

langkah 9. klik tombol play lagi jika belum dijalankan

langkah 10. periksa spreadsheet asli Anda dan akan ada email.

Jason
sumber
4
  1. Arahkan ke daftar. Pilih dropdown opsi kotak centang, dan pilih semua.
  2. [Di atas Anda akan mendapatkan opsi tautan untuk memilih semua percakapan dalam daftar Anda. Klik itu.] Pembaruan: Langkah ini tidak berhasil, itu hanya akan membiarkan Anda melakukan 25 sekaligus, payah!
  3. Lalu masuklah ke bawah menu tarik-turun Lainnya dan pilih pesan filter seperti ini.
  4. Dalam dialog filter, kotak teks Dari akan disorot. Ini semua dari alamat.
  5. Salin itu.
  6. Rekatkan ke editor HTML seperti Notepad ++ atau Visual Studio.
  7. Sekarang Anda hanya perlu melakukan pencarian dan mengganti kata ATAU, ganti dengan ;atau ,.
  8. Salin ulang daftar dan rekatkan ke pesan Anda.
Jason
sumber
Lebih baik berikan jawabannya saja. Tidak perlu cerita di baliknya. :-)
Yosi Mor
4

Satu-satunya cara untuk melakukan ini adalah

  1. Ekspor semua sebagai .txt (lihat: Mengekspor pesan Gmail ke file teks atau HTML )
  2. Lingkari semua itu dan ambil garis "Dari:" dalam database terpisah.

Catatan: jika Anda menggunakan imapsize (gratis) untuk langkah 1, maka simpan cadangan sebagai "% FROM - The pengirim of the email" dan Anda melihatnya di direktori Anda.

edelwater
sumber
Saya takut akan hal itu. Terimakasih Meskipun!
Brad
1

Saya menemukan cara untuk melakukan ini untuk pengguna Mac menggunakan Mac Mail dan buku alamat tanpa perlu mengunduh perangkat lunak tambahan. Ini bekerja dengan Mac Mail 4.6 dan Address Book 5.0.3. Tidak yakin apakah itu berfungsi untuk vers lain atau tidak. Ini mungkin bekerja sama untuk program Email IMAP lainnya seperti Thunderbird, tapi saya tidak bisa menjamin itu.

Berikut langkah-langkahnya:

  1. Siapkan akun Gmail Anda di Mac Mail. Pastikan server surat masuk adalah "imap.gmail.com" Anda dapat menemukannya di bawah bilah alat> Mail> Preferensi> Akun.
  2. Di Gmail, buat Label untuk email yang ingin Anda ekstrak alamat emailnya.
  3. Di Gmail, beri label semua email yang Anda inginkan per Label di atas.
  4. Di Gmail, buka Pengaturan> Label dan centang kotak untuk Label baru yang Anda buat yang bertuliskan "Show in IMAP."
  5. Mulai ulang Mac Mail agar Label Gmail baru disinkronkan.
  6. Buka Buku Alamat. Jika Anda menggunakan Buku Alamat untuk kontak Anda, Anda harus membuat cadangan kontak Anda karena Anda perlu menghapus semua kontak di Buku Alamat. Saya yakin Anda dapat melakukan ini dengan File> Ekspor> Arsip Buku Alamat. Saya tidak menggunakan Buku Alamat selain untuk mengekspor email Gmail jadi saya tidak bisa memberikan saran yang bagus tentang ini. Hapus kontak Buku Alamat dengan risiko Anda sendiri.
  7. Di Buku Alamat, hapus semua kontak Anda. Anda harus dapat melakukan ini dengan memilih satu kontak, menekan Command + a dan menekan tombol hapus.
  8. Di Mac Mail, cari folder IMAP Anda. Seharusnya ada kolom di sisi kiri jendela dengan semua Kotak Surat Anda. Jika tidak pergi ke bilah alat atas, pilih Lihat> Tampilkan Kotak Pesan atau tekan Command + Shift + M. Folder IMAP akan berada di bagian bawah kolom di bawah "Pengingat", "RSS", "Di Mac Saya" dll. Anda akan melihat Nama akun Gmail yang Anda atur sebelumnya dengan panah dropdown di sebelah kiri.
  9. Di Mac Mail, klik panah tarik turun di sebelah kotak surat Anda. Ini akan menampilkan daftar folder dan harus menunjukkan Label yang Anda buat di Gmail sebagai folder. Pilih folder ini dengan mengkliknya.
  10. Di Mac Mail di jendela Pesan, yang seharusnya sekarang menampilkan semua email Anda untuk Anda Label Gmail), pilih semua email dalam daftar. Buka bilah alat atas, pilih Pesan> Tambah Pengirim ke Buku Alamat atau tekan Shift+ Command+ Y. Semua pengirim untuk Label Gmail Anda sekarang harus berada di Buku Alamat.
  11. Di Buku Alamat, Anda sekarang dapat mengekspor kontak sebagai vCard untuk digunakan dalam program apa pun yang Anda suka dengan pergi ke toolbar dan memilih File> Ekspor> Ekspor vCard. Anda bahkan dapat mengimpor kembali ke Kontak Google. Jika Anda memerlukan file CSV, sayangnya Anda harus mengimpor vCard ke program lain (Kontak Google berfungsi) dan mengekspor kembali karena Anda tidak dapat mengekspor CSV dari Mac Mail.

Semoga ini membantu! Agak rumit, tetapi bekerja untuk saya dan cukup mudah setelah Anda melakukannya beberapa kali.

JP5678
sumber
0

MineMyMail mengambil semua pesan Anda melalui IMAP dan kemudian mengekstrak alamat email darinya.

Anda dapat memilih folder mana yang dicari dengan memilih folder / label "Email Terkirim".

Jason Vallery
sumber
Apakah MineMyMail dapat dipercaya? Saya pergi ke situs mereka dan Chrome memperingatkan saya bahwa sertifikat telah kedaluwarsa. Tidak memiliki sertifikat HTTPS yang tepat dan meminta pengguna untuk memasukkan nama pengguna dan kata sandi Gmail mereka benar-benar menakutkan. Ini membuat saya curiga bahwa situs tersebut dapat mengekstrak email dan menggunakannya untuk mengirim spam atau menjualnya sendiri kepada pengirim spam lainnya.
Moiz Tankiwala
0

Eksportir Alamat IMAP adalah Aplikasi Mac yang menghubungkan ke setiap akun email IMAP dan mengekstrak setiap alamat pengirim, juga dari folder / label yang Anda atur sebelumnya. Dalam semua keadilan, saya harus menyoroti bahwa itu dikembangkan oleh perusahaan saya.

flip79
sumber