Alınan Gmail iletilerinden e-posta adreslerini alın


33

Bana e-posta gönderen herkes için e-posta adreslerini içeren bir listeyi nasıl dışa aktarabilirim? Tüm mesajlarım arşivlendi.


deep-email-extractor.com arkadaşın. Ödenmiş ancak güvenli, güvenli ve iki adımlı şifreler kullanır. Birkaç yıl önce satın aldım ve hala kullanıyorum, çok kullanışlı
Tino Mclaren

Henüz bir cevap gönderemiyorum (yeterli rep değil), ancak bu Jerry Neumann'ın Python'daki cevabı harika çalışıyor!
Basj,

Yanıtlar:


13

Bazı ekstra araçlar ima eden tüm karmaşık cevaplar beni oldukça şaşırttı! Aldığınız her e-posta adresi, Gmail’in Kişiler bölümündeki "Tüm Kişiler" e ("Kişilerim" yerine) eklendi. Bunu dışa aktarın ve bitirdiniz (veya sorunuza bir şey özledim).


Bu, kişinin iletilerin basit bir arşivinden ziyade Gmail hesabına erişebildiğini varsayarsak harika olurdu. Güzel çözüm!
Brad

Evet, kabul edildi, ancak kişileri ayıklama araçları üzerinde kullanmak için bir uyarı var, OP'nin mesajlarının arşivlendiği gibi, 'toparlandığımızda çoğumuzla yaptığınız gibi, kişilerinizle uğraşıyor olabilirsiniz. Bu noktada, artık e-posta adreslerinin hepsinin 'olduğundan' emin değil misin? Ben bu durumdaydım ve buradaki tüm cevaplara baktım, Starbanana biri oldukça basit ve en güvenilir ve güvenilirdi (iki adım kimlik doğrulaması ve uygulamaya özel şifreler kullanıyor) ve bilgisayarımdan gmail'le doğrudan bağlantı kuruyordu; .
Tino Mclaren,

2
Bu, yalnızca bu ayarın açık olması durumunda geçerlidir. Varsayılan olmasına rağmen, kolaylıkla kapatabilirsiniz. Bakınız: Gmail'in otomatik olarak kişi oluşturmasını durdurma
ale

28

Bu, Google Apps Komut Dosyasının gücünün devreye girdiği yerdir. Aşağıdaki betiği yeni bir Google E-Tabloya yapıştırırsanız (Araçlar, Komut Dosyası düzenleyici, komut dosyasını doğrulamak için hata simgesine basın), o zaman numaraya göre otomatik olarak yeni sayfalar oluşturulur. Mevcut etiketlerin. Bundan sonra e-posta adresleri eklenecek.

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

SPLITKopyaları bulmak için adları ayıklamak için işlevi kullanın . Sistem klasörleri INBOXveya gibi göz ardı edilir All Items.

Not: komut dosyasının çalıştırılması biraz zaman alabilir; bu işlem elbette e-postaların sayısına bağlıdır.


@ MG1 betiği kontrol etti ve boş etiketlerde başarısız oldu. Kodu değiştirerek boş etiketlerden bahseden bir mesaj görünecek.
Jacob Jan Tuinstra

7

2017 Güncellemesi

Starbanana, adını derin e-posta çıkarıcı olarak değiştirdi ve aynı zamanda Uygulama Arayüzünü yenilemiş gibi görünüyor ve birden fazla hesapta çalışmasını sağlamıştı (benim uygulamamda yeni oturum açmış olduğunu keşfettim), bunu yansıtacak şekilde aşağıdaki bağlantıyı değiştirdi.

Orijinal cevap

Hızlı bir masaüstü uygulamasına ihtiyacınız varsa (bir komut dosyası değil) bunu düşünün.

Etiket düzeyinde çalışan ve derin e-posta çıkarıcıdan Gmail E -posta Aktarıcı'yı bulan bir uygulama aradım .

Bu ücretli bir uygulama (onlarla hiçbir ilgim yok), ancak ucuz ve belirli etiketlerden veya tüm Gmail hesabınızdan e-posta adreslerini dışa aktarıyorsunuz.

Bu nedenle, e-postanızda aldığınız tüm e-postaları bir filtre kullanarak bir etikete koyun ve bir CSV dosyasına vermek için yukarıdakileri kullanın.


1
Mac kullanıcıları için daha ucuz bir alternatif, Email Contacts Extractor'dır ( itunes.apple.com/us/app/email-contacts-extractor/… ). Tam açıklama: Kendim geliştirdim çünkü diğer tekliflerin çok pahalı olduğunu ya da e-postama çevrimiçi erişimin gerekli olduğunu hissettim.
hpique

20 adres veya daha az sürümde bir sürüm yapabilirseniz, harika olurdu.
Dan Rosenstark

starbanana.com şimdi e-postaları da vücuttan çıkartıyor , sadece denedim ve çoklu iş parçacığı da (aynı anda 15 etiket yapıyor) inanılmaz hızlı etkiledi.
Tino Mclaren

6

@ Jacob-jan-tuinstra'nın yanıtından alınmıştır. İhtiyaçlarıma uyacak küçük değişiklikler yaptım, belki de diğerleri bunu faydalı bulabilir.

Arama kullanır, etiketlere göre ayrılmaz ve aynı zamanda büyük gelen kutuları için ötme yapmaz.

'GMAIL'İNİZİ ARAMA SORUNU BURAYA GELİYOR' diyen bölüm gelen kutunuzda kullanacağınız herhangi bir sorgu ile doldurulabilir.

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

senin scrpit benim için mükemmel çalışıyor, teşekkürler! E-posta adreslerini e-posta gövdesinden alma seçeneği de ekleyebilir misiniz? Teşekkürler.

5

Aşağıdaki uygulama ücretsiz ve güzel çalışıyor!

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


Başka bir büyük yardımcı program. Ama henüz denemedim.
Moiz Tankiwala

1
'Online uygulamalara' ASLA ASLA güvenmezdim, birçoğu un / pw ve tüm e-posta adreslerini çelikle dolandırıyor. Yüklü uygulama ile gitmek - HTTPS bağlantısı.
Tino Mclaren

Dikkatli olmanız gerektiğine katılıyorum, ancak Labnol'un arkasındaki adam, gerçekten bir çok yararlı şey yayınlamış iyi bir adam. Eğer güvenmiyorsanız ama biraz teknikse, her zaman o makaleden bağlantı verdiği src kodunu alabilir ve kendi yazınızı alabilirsiniz
RedYeti

5

Şaşkın / Teknik Olmayan / Fikir Yok ne yapmalı?

Aşağıdaki adımları adım adım deneyin ve https://webapps.stackexchange.com/a/47930/6329

adım 1 drive.google.com

adım 2. yeni e-tablo

adım 3. araçlar> script editörü

adim 4. kapatma düğmesi ile giriş ekranını kapatın

adım 5. koda yapıştırın

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

adım 6. imlecinizi ilk satırda "getEmails" kelimesi üzerine getirin

adim 7. menü çubuğunda yukarıdaki oynatma üçgen düğmesine tıklayın

8. adım. Sizden doğrulamanızı ister, bunu yapın.

adim 9. daha önce yayınlanmadıysa play butonuna tekrar tıklayın

adim 10. orijinal e-tablonuzu kontrol edin, e-postalarınızı alacak.


4
  1. Listeye gidin. Onay kutusu seçeneği açılır menüsünü seçin ve tümünü seçin.
  2. [En üstte listenizdeki tüm konuşmaları seçmek için bir köprü seçeneğiniz olacak. Tıklayın.] Güncelleme: Bu adım işe yaramadı, sadece bir seferde 25 yapmanıza izin verecek, serseri!
  3. Ardından, Diğer açılır menünün altına gidin ve bunun gibi filtre mesajları seçin.
  4. Filtre iletişim kutusunda, Kimden metin kutusu vurgulanır. Bunların hepsi adreslerden.
  5. Kopyala.
  6. Notepad ++ veya Visual Studio gibi bir HTML editörüne yapıştırın.
  7. Şimdi sadece bir arama yapmak ve kelimenin yerine VEYA ile değiştirmeniz gerekiyor ;ya ,.
  8. Listeyi tekrar kopyalayın ve mesajınıza yapıştırın.

Cevap vermen daha iyi olur. Arkasındaki hikayeye gerek yok. :-)
Yosi Mor

4

Bunu yapmanın tek yolu

  1. Tümünü .txt olarak dışa aktar (bkz: Gmail iletilerini metin veya HTML dosyalarına dışa aktarın )
  2. Hepsini dolaştırın ve "Kimden:" satırlarını ayrı bir veritabanında gezdirin.

Not: 1. adım için imapsize (free) kullanıyorsanız, yedekleri "% FROM - e-postanın göndereni" olarak kaydedin ve dizini açık bir şekilde görünmesini sağlayın.


Bundan korkuyordum. Yine de teşekkürler!
Brad

1

Ekstra yazılım indirmeye gerek kalmadan Mac kullanıcıları ve adres defterlerini kullanarak Mac kullanıcıları için bunu yapmanın bir yolunu buldum. Bu Mac Mail 4.6 ve Adres Defteri 5.0.3 ile çalışır. Diğer vers için işe yarayıp yaramadığından emin değil. Bu, Thunderbird gibi diğer IMAP E-posta programları için benzer şekilde çalışabilir, ancak buna kefil olamıyorum.

İşte adımlar:

  1. Gmail hesabınızı Mac Mail'de ayarlayın. Gelen posta sunucusunun "imap.gmail.com" olduğundan emin olun. Bunu araç çubuğu> Posta> Tercihler> Hesaplar altında bulabilirsiniz.
  2. Gmail'de, e-posta adreslerini çıkarmak istediğiniz e-postalar için bir Etiket oluşturun.
  3. Gmail’de, yukarıdaki Etiket başına istediğiniz tüm e-postaları etiketleyin.
  4. Gmail'de, Ayarlar> Etiketler'e gidin ve oluşturduğunuz yeni "IMAP'ta Göster" etiketini içeren kutuyu işaretleyin.
  5. Yeni Gmail Etiketi eşitlenecek şekilde Mac Mail'i yeniden başlatın.
  6. Adres Defteri'ni açın. Rehberiniz için Adres Defteri kullanıyorsanız, rehberinizde tüm kişileri silmeniz gerektiğinden rehberinizi yedeklemeniz gerekir. Bunu Dosya> Dışa Aktar> Adres Defteri Arşivi ile yapabileceğinizi düşünüyorum. Adres Defteri'ni Gmail e-postalarını dışlamak dışında kullanmıyorum, bu yüzden bu konuda iyi tavsiyelerde bulunamıyorum. Adres Defteri kişilerini silmek kendi sorumluluğunuzdadır.
  7. Adres Defteri'nde tüm kişilerinizi silin. Bunu bir kişiyi seçerek, Command + a tuşlarına basarak ve sil tuşuna basarak yapabilirsiniz.
  8. Mac Mail'de IMAP klasörünüzü bulun. Pencerenin sol tarafında tüm Posta Kutularınızı içeren bir sütun olmalıdır. Üst araç çubuğuna gitmezse, Görünüm> Posta Kutularını Göster'i seçin veya Command + Shift + M tuşlarına basın. IMAP klasörü, "Hatırlatıcılar", "RSS", "Mac'imde" vb. Altındaki sütunun altına doğru olacaktır. Daha önce solda açılan bir okla kurduğunuz Gmail hesabınızın adını görmelisiniz.
  9. Mac Mail'de, posta kutunuzun yanındaki açılır oka tıklayın. Bu size bir klasör listesi gösterecektir ve Gmail'de oluşturduğunuz Etiketi bir klasör olarak göstermelidir. Bu klasörü tıklatarak seçin.
  10. Mesajlar penceresindeki Mac Mail'de, artık sizin Gmail Etiketiniz için tüm e-postalarınızı göstermesi gereken), listedeki tüm e-postaları seçin. Üst araç çubuğuna gidin, Mesajlar> Göndericileri Adres Defterine Ekle'yi seçin veya Shift+ Command+ tuşlarına basın Y. Gmail Etiketiniz için tüm gönderenlerin artık Adres Defteri'nde olması gerekir.
  11. Adres Defteri'nde artık araç çubuğuna gidip Dosya> Ver> Dışarıdan ver vCard'ları seçerek kişileri istediğiniz programda kullanmak için vCard olarak dışa aktarabilirsiniz. Hatta Google Rehber’e geri alabilirsiniz. Bir CSV dosyasına ihtiyacınız varsa, ne yazık ki vCard'ları başka bir programa içe aktarmanız (Google Kişileri çalışır) ve yeniden dışa aktarmanız gerekir çünkü CSV'yi Mac Mail'den dışa aktaramazsınız.

Bu yardımcı olur umarım! Biraz hantal, ama benim için çalışıyor ve birkaç kez yaptıktan sonra oldukça kolay.


0

MineMyMail, tüm mesajlarınızı IMAP üzerinden alır ve ardından e-posta adreslerini çıkarır.

"Gönderilmiş Postalar" klasörünü / etiketini seçerek hangi klasörleri arayacağını seçebilirsiniz.


MineMyMail güvenilir midir? Sitelerine gittim ve Chrome, sertifikanın süresinin dolduğu konusunda beni uyardı. Uygun bir HTTPS sertifikasına sahip olmamak ve kullanıcılardan Gmail kullanıcı adlarını ve şifrelerini girmelerini istemek kesinlikle korkutucu. Bu, sitenin e-postaları ayıklayabileceği ve kendi spam'leri için veya diğer spam göndericilere satış yapmak için kullanabileceğinden şüphelenmeme neden oluyor.
Moiz Tankiwala

0

IMAP Adresleri Aktarıcı , herhangi bir IMAP e-posta hesabına bağlanan ve her gönderenin adresini, daha önce belirlediğiniz klasörlerden / etiketlerden ayıklayan bir Mac uygulamasıdır. Adil olmak gerekirse, şirketimin geliştirdiğini vurgulamak zorundayım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.