Ricevi indirizzi e-mail dai messaggi Gmail ricevuti


33

Come posso esportare un elenco contenente indirizzi e-mail per tutti coloro che mi hanno inviato un'e-mail? Ho archiviato tutti i messaggi.


deep-email-extractor.com è tuo amico. Pagato per ma sicuro, protetto e utilizza password in due passaggi. L'ho comprato qualche anno fa e lo uso ancora, abbastanza utile
Tino Mclaren,

Non riesco ancora a postare una risposta (non abbastanza rappresentante), ma questa risposta di Jerry Neumann qui in Python funziona meravigliosamente!
Basj,

Risposte:


13

Sono abbastanza sorpreso da tutte le risposte complicate che implicano alcuni strumenti extra! Ogni email che ricevi ha il suo indirizzo aggiunto a "Tutti i contatti" (anziché "I miei contatti") nella parte Contatti di Gmail. Esporta quello e il gioco è fatto (o ho perso qualcosa nella tua domanda).


Funzionerebbe alla grande, supponendo che la persona abbia ancora accesso all'account Gmail piuttosto che a un semplice archivio dei messaggi. Buona soluzione!
Brad

Sì, d'accordo, ma c'è un avvertimento nell'uso dei contatti rispetto agli strumenti di estrazione, potresti aver incasinato i tuoi contatti, molti di noi lo fanno quando "riordiniamo" come suggerisce l'OP mentre i suoi messaggi vengono archiviati. A questo punto non sei sicuro di avere "tutti" i tuoi indirizzi email? Mi trovavo in questa situazione e dopo aver esaminato tutte le risposte qui, quella Starbanana era semplicemente la più elegante e affidabile (utilizza password in due passaggi e specifiche per app) e una connessione diretta dal mio PC a Gmail, quindi nessun uomo in ascolto centrale .
Tino Mclaren l'

2
Questo è vero solo se l'impostazione è attivata. Sebbene sia l'impostazione predefinita, puoi facilmente disattivarla. Vedi: Impedisci a Gmail di creare automaticamente contatti
ale,

28

È qui che entra in gioco la potenza di Google Apps Script. Se si incolla il seguente script in un nuovo foglio di calcolo di Google (Strumenti, Editor di script, premere l'icona del bug per autenticare lo script), i nuovi fogli verranno automaticamente creati in base al numero delle etichette presenti. Successivamente, verranno aggiunti gli indirizzi e-mail.

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

Utilizzare la SPLITfunzione per estrarre i nomi per trovare duplicati. Le cartelle di sistema vengono ignorate, come INBOXo All Items.

Nota: l'esecuzione dello script potrebbe richiedere del tempo, il che dipende ovviamente dal numero di e-mail


@ MG1 ha controllato lo script e non funziona su etichette vuote. Codice rivisto in modo che appaia un messaggio, menzionando le etichette vuote.
Jacob Jan Tuinstra,

7

Aggiornamento 2017

Starbanana ha cambiato il proprio nome in deep-email-extractor e sembra anche aver rinnovato l'interfaccia utente dell'app e fatto funzionare su più account (scoperto avendo appena effettuato l'accesso alla mia app), modificato il collegamento in basso per riflettere questo.

Risposta originale

Se hai bisogno di un'app desktop veloce (non uno script), considera questo.

Ho fatto un po 'di ricerca di un'app che funzioni a livello di etichetta e ho trovato Gmail Email Exporter da deep-email-extractor .

È un'app a pagamento (non ho nulla a che fare con loro) ma è economica e puoi esportare indirizzi e-mail da etichette specifiche o da tutto il tuo account Gmail.

Quindi nel tuo caso metti tutta la tua e-mail ricevuta in un'etichetta usando un filtro e usa quanto sopra per esportare in un file CSV.


1
Un'alternativa più economica per gli utenti Mac è Email Contacts Extractor ( itunes.apple.com/us/app/email-contacts-extractor/… ). Divulgazione completa: l'ho sviluppata io stesso perché sentivo che altre offerte erano troppo costose o richiedevo l'accesso online alla mia e-mail.
Hpique l'

Sarebbe fantastico se tu potessi fare una versione per 20 indirizzi o meno, come fanno loro.
Dan Rosenstark,

starbanana.com ora estrae anche le e-mail dal corpo, l'ho appena provato e anche il multi-threading (fa 15 etichette contemporaneamente) incredibilmente veloce e ben impressionato.
Tino Mclaren,

6

Basato sulla risposta di @ jacob-jan-tuinstra. Ho apportato alcune modifiche minori per soddisfare le mie esigenze, forse altri lo potrebbero trovare utile.

Utilizza la ricerca, non viene suddiviso in base alle etichette e viene utilizzato anche per le grandi caselle di posta in arrivo.

La parte che dice "LA TUA RICHIESTA DI RICERCA DI GMAIL VA QUI" può essere riempita con qualsiasi query che useresti nella tua casella di posta.

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

il tuo scrpit funziona perfettamente per me, grazie! puoi aggiungere l'opzione per recuperare anche gli indirizzi e-mail dal corpo dell'e-mail, molto apprezzato. Grazie.

5

La seguente app è gratuita e funziona magnificamente!

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


Un'altra grande utilità. Ma devo ancora provarlo.
Moiz Tankiwala,

1
Non mi fiderei MAI di nessuna 'app online', così tante truffe là fuori che uniscono / pw e tutti i tuoi indirizzi e-mail. Vai con App installata - Connessione HTTPS.
Tino Mclaren,

Sono d'accordo che devi essere cauto, ma il ragazzo dietro Labnol è un bravo ragazzo che ha pubblicato un sacco di cose davvero utili. Se non ti fidi, ma sei un po 'tecnico, puoi sempre andare a prendere il codice src a cui si collega da quell'articolo, e tirare il tuo: ctrlq.org/code/…
RedYeti,

5

Confuso / Non tecnico / Nessuna idea cosa fare?

Prova il seguente passo per passo e grazie a https://webapps.stackexchange.com/a/47930/6329

passaggio 1. drive.google.com

passaggio 2. nuovo foglio di calcolo

passaggio 3. strumenti> editor di script

passaggio 4. chiudere l'introduzione pop-up con il pulsante di chiusura

passaggio 5. incolla il codice

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

passaggio 6. posizionare il cursore su all'interno della parola "getEmails" nella prima riga

passaggio 7. fare clic sul pulsante Riproduci triangolo sopra nella barra dei menu

passaggio 8. Ti chiede di autenticarti, fallo

passaggio 9. fare nuovamente clic sul pulsante di riproduzione se non è già stato eseguito

passo 10. controlla il tuo foglio di calcolo originale e avrà le e-mail.


4
  1. Vai all'elenco. Scegli il menu a discesa delle opzioni e seleziona tutto.
  2. [Nella parte superiore otterrai un'opzione di collegamento ipertestuale per scegliere tutte le conversazioni nell'elenco. Fai clic.] Aggiornamento: questo passaggio non funziona, ti consentirà di fare solo 25 alla volta, bummer!
  3. Quindi vai sotto il menu a discesa Altro e scegli i filtri di filtro come questi.
  4. Nella finestra di dialogo del filtro, la casella di testo Da verrà evidenziata. Questi sono tutti gli indirizzi di provenienza.
  5. Copialo.
  6. Incollalo in un editor HTML come Notepad ++ o Visual Studio.
  7. Ora devi solo fare una ricerca e sostituire la parola OR, sostituire con ;o ,.
  8. Ricopia l'elenco e incollalo nel tuo messaggio.

Meglio dare la risposta. Non c'è bisogno della storia dietro di essa. :-)
Yosi Mor il

4

L'unico modo per farlo è

  1. Esporta tutto come .txt (vedi: Esporta messaggi Gmail in file di testo o HTML )
  2. Scorri tutto e grep "Da:" righe in un database separato.

Nota: se usi imapsize (gratuito) per il passaggio 1, salva i backup come "% FROM - Il mittente dell'e-mail" e li hai in bella vista nella tua directory.


Ne avevo paura. Grazie comunque!
Brad

1

Ho trovato un modo per farlo per gli utenti Mac usando Mac Mail e la rubrica senza dover scaricare software aggiuntivo. Funziona con Mac Mail 4.6 e Rubrica 5.0.3. Non sono sicuro se funziona per altri vers o meno. Questo potrebbe funzionare in modo simile per altri programmi di posta elettronica IMAP come Thunderbird, ma non posso garantirlo.

Ecco i passaggi:

  1. Configura il tuo account Gmail in Mac Mail. Assicurati che il server di posta in arrivo sia "imap.gmail.com". Puoi trovarlo nella barra degli strumenti> Posta> Preferenze> Account.
  2. In Gmail, crea un'etichetta per le email per le quali desideri estrarre gli indirizzi email.
  3. In Gmail, etichetta tutte le email che desideri per etichetta sopra.
  4. In Gmail, vai su Impostazioni> Etichette e spunta la casella per la nuova etichetta che hai creato che dice "Mostra in IMAP".
  5. Riavvia Mac Mail in modo che la nuova etichetta Gmail si sincronizzi.
  6. Apri la rubrica. Se si utilizza la Rubrica per i contatti, è necessario eseguire il backup dei contatti poiché è necessario eliminare tutti i contatti nella Rubrica. Credo che tu possa farlo con File> Esporta> Archivio rubrica. Non uso la Rubrica se non per esportare e-mail Gmail, quindi non posso dare buoni consigli al riguardo. Elimina i contatti della Rubrica a tuo rischio e pericolo.
  7. Nella Rubrica, elimina tutti i tuoi contatti. Dovresti essere in grado di farlo selezionando un contatto, premendo Comando + ae premendo il tasto Canc.
  8. In Mac Mail, trova la tua cartella IMAP. Dovrebbe esserci una colonna sul lato sinistro della finestra con tutte le tue cassette postali. In caso contrario, vai alla barra degli strumenti in alto, seleziona Visualizza> Mostra caselle postali o premi Comando + Maiusc + M. La cartella IMAP sarà nella parte inferiore della colonna sotto "Promemoria", "RSS", "Sul mio Mac" ecc. Dovresti vedere il Nome del tuo account Gmail che hai impostato in precedenza con una freccia a discesa sulla sinistra.
  9. In Mac Mail, fai clic sulla freccia a discesa accanto alla tua casella di posta. Questo ti mostrerà un elenco di cartelle e dovrebbe mostrare l'etichetta che hai creato in Gmail come cartella. Seleziona questa cartella facendo clic su di essa.
  10. In Mac Mail nella finestra Messaggi, che ora dovrebbe mostrare tutte le tue e-mail per la tua etichetta Gmail), seleziona tutte le e-mail nell'elenco. Vai alla barra degli strumenti in alto, seleziona Messaggi> Aggiungi mittenti alla rubrica o premi Shift+ Command+ Y. Tutti i mittenti per la tua etichetta Gmail dovrebbero ora essere nella Rubrica.
  11. Nella Rubrica ora puoi esportare i contatti come vCard da utilizzare in qualsiasi programma ti piace andando sulla barra degli strumenti e selezionando File> Esporta> Esporta vCard. Puoi persino importare nuovamente nei Contatti di Google. Se hai bisogno di un file CSV, sfortunatamente dovrai importare le vCard in un altro programma (funziona Google Contacts) e riesportarlo perché non puoi esportare CSV da Mac Mail.

Spero che sia di aiuto! È un po 'ingombrante, ma funziona per me ed è abbastanza facile dopo averlo fatto un paio di volte.


0

MineMyMail recupera tutti i tuoi messaggi tramite IMAP e quindi estrae gli indirizzi email da esso.

Puoi scegliere quali cartelle cercare selezionando la cartella / etichetta "Posta inviata".


MineMyMail è affidabile? Sono andato sul loro sito e Chrome mi ha avvertito che il certificato è scaduto. Non avere un certificato HTTPS adeguato e chiedere agli utenti di inserire il loro nome utente e password Gmail è sicuramente spaventoso. Mi porta a sospettare che il sito potrebbe estrarre le e-mail e utilizzarlo per il proprio spamming o la vendita ad altri spammer.
Moiz Tankiwala,

0

IMAP Addresses Exporter è un'app per Mac che si collega a qualsiasi account di posta elettronica IMAP ed estrae ogni indirizzo del mittente, anche dalle cartelle / etichette impostate in precedenza. In tutta onestà, devo sottolineare che è stato sviluppato dalla mia azienda.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.