web-dev-qa-db-fra.com

Obtenir les adresses électroniques des messages Gmail reçus

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.

33
Brad

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).

13
Patrick Honorez

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 fonction SPLIT pour extraire les noms afin de rechercher les doublons. Les dossiers système sont ignorés, comme INBOX ou All Items.

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

28

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éorganisé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 auprès de deep-email-extractor .

C'est une application payante (je n'ai rien à voir avec elles) mais elle est économique 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.

7
LenPopLilly

L'application suivante est gratuite et fonctionne à merveille!

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

5
MidGe

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 qui dit 'VOTRE RECHERCHE DE RECHERCHE GMAIL SE TROUVE ICI' peut être remplie avec 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);
}
5
varblob

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.

5
Jason

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.

4
edelwater
  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, le remplacer par ; ou ,.
  8. Recopiez la liste et collez-la dans votre message.
4
Jason

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 tels que 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 apparaîtra 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. Dans 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 le 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 les 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.

1
JP5678

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é".

0
Jason Vallery

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.

0
flip79