Obtenir les adresses électroniques des messages Gmail reçus

33

Comment puis-je exporter une liste contenant des adresses électroniques pour tous ceux qui m'ont envoyé un courrier électronique? J'ai tous les messages archivés.

Brad
la source
deep-email-extractor.com est votre ami. Payé mais sûr, sécurisé et utilise des mots de passe en deux étapes. Je l'ai acheté il y a quelques années et l'utilise encore, assez pratique
Tino Mclaren
Je ne peux pas encore poster de réponse (pas assez de représentants), mais cette réponse de Jerry Neumann ici en Python fonctionne à merveille!
Basj

Réponses:

13

Je suis assez surpris par toutes les réponses compliquées impliquant des outils supplémentaires! Chaque email que vous recevez a son adresse ajoutée à "Tous les contacts" (par opposition à "Mes contacts") dans la partie Contacts de Gmail. Exportez celui-ci et vous avez terminé (ou j'ai oublié quelque chose dans votre question).

Patrick Honorez
la source
Cela fonctionnerait très bien, en supposant que la personne ait toujours accès au compte Gmail plutôt qu’à une simple archive des messages. Bonne solution!
Brad
Oui, mais il y a un inconvénient à utiliser des contacts sur des outils d'extraction, vous avez peut-être gâché vos contacts, beaucoup d'entre nous le faisons quand nous «rangons» comme le suggère le PO, ses messages étant archivés. À ce stade, vous n'êtes pas sûr si vous avez "toutes" vos adresses électroniques? J'étais dans cette situation et après avoir regardé toutes les réponses ici, celui de starbanana était tout simplement le plus élégant et le plus fiable (il utilise des mots de passe d'autorisation en deux étapes et spécifique à l'application) et une connexion directe de mon PC à gmail de sorte qu'aucun homme au milieu n'écoute .
Tino Mclaren
2
Ceci n’est vrai que si ce paramètre est activé. Bien que ce soit la valeur par défaut, vous pouvez facilement le désactiver. Voir: Empêcher Gmail de créer automatiquement des contacts
ale
28

C’est là que la puissance de Google Apps Script entre en jeu. Si vous collez le script suivant dans une nouvelle feuille de calcul Google (Outils, Éditeur de script, appuyez sur l’icône du bug pour authentifier le script), de nouvelles feuilles seront automatiquement créées en fonction du numéro. des étiquettes présentes. Après cela, les adresses e-mail seront ajoutées.

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

Utilisez la SPLITfonction pour extraire les noms afin de rechercher les doublons. Les dossiers système sont ignorés, comme INBOXou All Items.

Remarque: l’exécution du script peut prendre un certain temps, ce qui dépend bien entendu du nombre de courriels

Jacob Jan Tuinstra
la source
@ MG1 a vérifié le script et il a échoué sur les étiquettes vides. Code révisé pour qu'un message apparaisse, mentionnant les étiquettes vides.
Jacob Jan Tuinstra
7

Mise à jour 2017

Starbanana a changé le nom de deep-email-extractor. Il semble également que l'interface utilisateur de l'application ait été réaménagée et rendue compatible avec plusieurs comptes (découverte après la connexion à mon application). Le lien ci-dessous a été modifié pour refléter cette modification.

Réponse originale

Si vous avez besoin d'une application de bureau rapide (pas d'un script), alors considérez ceci.

J'ai beaucoup cherché une application qui fonctionne au niveau de l'étiquette et j'ai trouvé Gmail Email Exporter dans deep-email-extractor .

C'est une application payante (je n'ai rien à voir avec elles) mais elle est bon marché et vous permet d'exporter des adresses e-mail à partir d'étiquettes spécifiques ou de tous vos comptes Gmail.

Donc, dans votre cas, mettez tous vos courriers électroniques reçus dans une étiquette à l'aide d'un filtre et utilisez ce qui précède pour exporter dans un fichier CSV.

LenPopLilly
la source
1
Email Contacts Extractor ( itunes.apple.com/us/app/email-contacts-extractor/… ) est une alternative moins chère pour les utilisateurs Mac . Divulgation complète: je l'ai développé moi-même parce que j'estimais que d'autres offres étaient trop chères ou nécessitaient un accès en ligne à mon courrier électronique.
hpique
Ce serait génial si vous pouviez créer une version à 20 adresses ou moins, comme ils le font.
Dan Rosenstark
starbanana.com extrait maintenant aussi les courriels du corps, je viens de l'essayer et le multitraitement aussi (fait 15 étiquettes en même temps) incroyablement rapide bien impressionné.
Tino Mclaren
6

Basé sur la réponse de @ jacob-jan-tuinstra. Apporté quelques modifications mineures pour répondre à mes besoins, peut-être que d'autres le trouveraient utile.

Utilise la recherche, ne sépare pas les libellés et ne coupe pas les grandes boîtes de réception.

La partie intitulée "VOTRE RECHERCHE DE RECHERCHE GMAIL SE TROUVE ICI" peut être complétée par toute requête que vous utiliseriez dans votre boîte de réception.

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
la source
ton scrpit fonctionne parfaitement pour moi, merci! pouvez-vous ajouter la possibilité de récupérer des adresses e-mail du corps de l'e-mail également, ce qui est très apprécié. Merci.
5

L'application suivante est gratuite et fonctionne à merveille!

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

Moucheron
la source
Une autre grande utilité. Mais je dois encore l'essayer.
Moiz Tankiwala
1
Je ne ferais JAMAIS confiance à aucune 'application en ligne', autant d'escroqueries dénonçant un / pw et toutes vos adresses électroniques. Aller avec application installée - connexion HTTPS.
Tino Mclaren
Je conviens que vous devez être prudent, mais le gars derrière Labnol est un bon gars qui a publié une tonne de choses vraiment utiles. Si vous n'y croyez pas mais que vous êtes un peu technique, vous pouvez toujours aller récupérer le code src auquel il renvoie
RedYeti
5

Confus / non technique / aucune idée que faire?

Essayez ce qui suit, étape par étape, et grâce à https://webapps.stackexchange.com/a/47930/6329

étape 1. drive.google.com

étape 2. nouvelle feuille de calcul

étape 3. outils> éditeur de script

étape 4. fermez l'introduction avec le bouton de fermeture

étape 5. coller dans le code

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

étape 6. placez votre curseur dans le mot "getEmails" dans la première ligne

étape 7. cliquez sur le bouton triangle de lecture ci-dessus dans la barre de menus

étape 8. Il vous demande de vous authentifier, faites-le

étape 9. Cliquez à nouveau sur le bouton de lecture s'il n'a pas déjà été lancé.

étape 10. Vérifiez votre feuille de calcul d'origine et les e-mails y figureront.

Jason
la source
4
  1. Accédez à la liste. Choisissez la liste déroulante des options et sélectionnez tout.
  2. [En haut, vous aurez une option de lien hypertexte pour choisir toutes les conversations de votre liste. Cliquez dessus.] Mise à jour: Cette étape ne fonctionne pas, elle vous permettra seulement de faire 25 à la fois, minable!
  3. Ensuite, allez dans le menu déroulant Plus et choisissez des messages de filtre comme ceux-ci.
  4. Dans la boîte de dialogue du filtre, la zone de texte De sera mise en surbrillance. Ce sont toutes les adresses de départ.
  5. Copiez le.
  6. Collez-le dans un éditeur HTML tel que Notepad ++ ou Visual Studio.
  7. Maintenant, il vous suffit de faire une recherche et de remplacer le mot OU, de remplacer par ;ou ,.
  8. Recopiez la liste et collez-la dans votre message.
Jason
la source
Mieux vaut juste donner la réponse. Pas besoin de l'histoire derrière elle. :-)
Yosi Mor
4

La seule façon de faire est

  1. Exporter tout au format .txt (voir: Exporter des messages Gmail en fichiers texte ou HTML )
  2. Boucle à travers tout cela et grep "De:" lignes dans une base de données séparée.

Remarque: si vous utilisez imapsize (free) à l'étape 1, enregistrez les sauvegardes sous le nom "% FROM - L'émetteur de l'e-mail" et vous les trouverez bien en vue dans votre répertoire.

Edelwater
la source
J'avais peur de ça. Merci quand même!
Brad
1

J'ai trouvé un moyen de le faire pour les utilisateurs Mac utilisant Mac Mail et le carnet d'adresses sans avoir à télécharger de logiciel supplémentaire. Cela fonctionne avec Mac Mail 4.6 et Address Book 5.0.3. Je ne sais pas si cela fonctionne pour d'autres vers ou non. Cela peut fonctionner de la même manière pour d’autres programmes de messagerie IMAP comme Thunderbird, mais je ne peux pas en garantir.

Voici les étapes:

  1. Configurez votre compte Gmail dans Mac Mail. Assurez-vous que le serveur de messagerie entrant est "imap.gmail.com". Vous pouvez le trouver dans la barre d’outils> Mail> Préférences> Comptes.
  2. Dans Gmail, créez une étiquette pour les courriers électroniques pour lesquels vous souhaitez extraire des adresses électroniques.
  3. Dans Gmail, étiquetez tous les courriels souhaités par Étiquette ci-dessus.
  4. Dans Gmail, accédez à Paramètres> Étiquettes et cochez la case correspondant à la nouvelle étiquette que vous avez créée et qui indique "Afficher dans IMAP".
  5. Redémarrez Mac Mail pour que la nouvelle étiquette Gmail se synchronise.
  6. Ouvrir le carnet d'adresses. Si vous utilisez le carnet d'adresses pour vos contacts, vous devez les sauvegarder, car vous devez supprimer tous les contacts du carnet d'adresses. Je pense que vous pouvez le faire avec Fichier> Exporter> Archive du carnet d’adresses. Je n'utilise pas le carnet d'adresses autrement que pour l'exportation d'e-mails Gmail, je ne peux donc pas vous donner de bons conseils à ce sujet. Supprimez les contacts du carnet d'adresses à vos risques et périls.
  7. Dans le carnet d'adresses, supprimez tous vos contacts. Vous devriez pouvoir le faire en sélectionnant un contact, en appuyant sur Commande + a et en appuyant sur la touche Suppr.
  8. Dans Mac Mail, recherchez votre dossier IMAP. Il devrait y avoir une colonne sur le côté gauche de la fenêtre avec toutes vos boîtes aux lettres. Sinon, sélectionnez Affichage> Afficher les boîtes aux lettres ou appuyez sur Commande + Maj + M. Le dossier IMAP se trouvera au bas de la colonne sous "Rappels", "RSS", "Sur mon Mac", etc. Le nom de votre compte Gmail que vous avez configuré précédemment doit s'afficher avec une flèche déroulante à gauche.
  9. Dans Mac Mail, cliquez sur la flèche déroulante en regard de votre boîte aux lettres. Cela vous montrera une liste de dossiers et devrait montrer le label que vous avez créé dans Gmail en tant que dossier. Sélectionnez ce dossier en cliquant dessus.
  10. Dans Mac Mail, dans la fenêtre Messages, qui devrait maintenant afficher tous vos courriels pour votre étiquette Gmail), sélectionnez tous les courriels de la liste. Allez à la barre d’outils supérieure, sélectionnez Messages> Ajouter des expéditeurs au carnet d’adresses ou appuyez sur Shift+ Command+ Y. Tous les expéditeurs de votre libellé Gmail doivent désormais figurer dans le carnet d'adresses.
  11. Dans Carnet d'adresses, vous pouvez désormais exporter des contacts sous forme de vCards à utiliser dans le programme de votre choix en accédant à la barre d'outils en sélectionnant Fichier> Exporter> Exporter les vCards. Vous pouvez même importer dans Google Contacts. Si vous avez besoin d'un fichier CSV, vous devrez malheureusement importer les vCards dans un autre programme (Google Contacts fonctionne) et réexporter, car vous ne pouvez pas exporter de CSV à partir de Mac Mail.

J'espère que cela t'aides! C'est un peu lourd, mais cela fonctionne pour moi et c'est assez facile après que vous le fassiez plusieurs fois.

JP5678
la source
0

MineMyMail récupère tous vos messages via IMAP, puis en extrait les adresses électroniques.

Vous pouvez choisir les dossiers qu'il recherche en sélectionnant le dossier / libellé "Envoyé".

Jason Vallery
la source
MineMyMail est-il digne de confiance? Je suis allé sur leur site et Chrome m'a averti que le certificat avait expiré. Ne pas avoir un certificat HTTPS approprié et demander aux utilisateurs de saisir leur nom d'utilisateur et leur mot de passe Gmail est définitivement effrayant. Cela m'amène à penser que le site pourrait extraire les courriels et les utiliser pour leur propre spam ou leur vente à d'autres spammeurs.
Moiz Tankiwala
0

L’exportateur d’adresses IMAP est une application Mac qui se connecte à n’importe quel compte de messagerie IMAP et extrait chaque adresse d’expéditeur, ainsi que des dossiers / libellés définis précédemment. En toute justice, je dois souligner que ce logiciel a été développé par mon entreprise.

flip79
la source