我如何导出包含给我发送电子邮件的每个人的电子邮件地址的列表?我已将所有邮件存档。

评论

deep-email-extractor.com是您的朋友。付费但安全可靠,并使用两步密码。我几年前买了它,至今仍在使用,非常方便

我还无法发布答案(代表人数不足),但是Jerry Neumann在Python中的答案在这里效果很好!

我建议您查看SigParser。它无需所有编码即可完成操作,而且他们不会像其他产品那样出售您的数据。

#1 楼

所有复杂的答案都暗示着一些额外的工具,这让我感到非常惊讶!
您收到的每封电子邮件的地址都添加到Gmail的“联系人”部分的“所有联系人”(而不是“我的联系人”)中。
将其导出就可以完成操作(或者我在您的问题中漏掉了某些内容)。

评论


假设此人仍然可以访问Gmail帐户,而不是简单的邮件存档,那将很好用。好的解决方案!

–布拉德
2014年12月29日在16:12

是的,但在提取工具上使用联系人有一个警告,您可能已经弄糟了您的联系人,我们很多人都在按照收银台的建议来“整理”他的邮件时对其进行整理。此时,您现在不确定是否拥有“全部”电子邮件地址?我当时处于这种情况,并且在这里查看了所有答案,starbanana一个非常简单,最可信赖(它使用两步身份验证和应用专用密码),并且从我的PC到gmail直接连接,因此中间没有人在听。

–蒂诺·麦克拉伦(Tino Mclaren)
15年3月8日在9:17

仅当您启用该设置时,才如此。虽然它是默认设置,但您可以轻松将其关闭。请参阅:阻止Gmail自动创建联系人

–ale
16年3月12日在18:27

“ gmail联系人区域”在哪里?

– Akiva
20 May 15 '21:31

#2 楼

这是发挥Google Apps脚本功能的地方。如果将以下脚本粘贴到新的Google Spreadsheet中(工具,脚本编辑器,请按bug图标以验证脚本),则将根据编号自动创建新的表格。存在标签。之后,将添加电子邮件地址。

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


使用SPLIT函数提取名称以查找重复项。系统文件夹将被忽略,例如INBOXAll Items

注意:脚本可能需要一些时间才能执行,这当然取决于电子邮件的数量

评论


@ MG1检查了脚本,它在空标签上失败。修改后的代码,以便出现一条消息,其中提到了空标签。

–雅各布·扬·图恩斯特拉(Jacob Jan Tuinstra)
13年6月4日在20:54

#3 楼

2017年更新

Starbanana已将其名称更改为Deep-email-extractor,并且看起来也像改进了App UI并使其可在多个帐户上运行(发现已登录我的应用程序),更改了链接

原始答案

如果您需要快速的桌面应用程序(而不是脚本),请考虑一下。

我做了搜索了一些可以在标签级别使用的应用程序,并从深度电子邮件提取程序中找到了Gmail电子邮件导出器。

这是一款付费应用程序(与它们无关),但价格便宜,而且您可以从特定标签或您的所有Gmail帐户导出电子邮件地址。

因此,在您的情况下,请使用过滤器将收到的所有电子邮件放入标签中,并使用以上内容将其导出到CSV文件。 />

评论


对于Mac用户而言,更便宜的替代方法是电子邮件联系人提取器(itunes.apple.com/us/app/email-contacts-extractor/…)。全披露:我自己开发了它,因为我觉得其他产品太昂贵或需要在线访问我的电子邮件。

–hpique
13年7月11日在9:37

如果您能像他们一样为20个地址或更少的地址创建一个版本,那就太好了。

–丹·罗森斯塔克(Dan Rosenstark)
2013年9月17日22:40在

starbanana.com现在也可以从体内提取电子邮件,我刚刚尝试了一下,并且多线程(同时做15个标签)的速度令人印象深刻。

–蒂诺·麦克拉伦(Tino Mclaren)
2013年11月9日在16:41



#4 楼

基于@ jacob-jan-tuinstra的答案。进行了一些细微的修改以满足我的需要,也许其他人会觉得有用。

使用搜索,不会被标签打乱,也可以对大型收件箱进行分块。

您可以在收件箱中使用的任何查询都可以填满“您的GMAIL搜索查询会在这里”的部分。

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


评论


谢谢您,您的讲演技巧对我来说非常完美!您是否还可以添加用于从电子邮件正文中检索电子邮件地址的选项,非常感谢。谢谢。

–user74582
14年7月16日在6:19

#5 楼

以下应用程序是免费的,并且运行精美!

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

评论


另一个伟大的实用程序。但是我还没有尝试。

– Moiz Tankiwala
2014年2月3日在18:49

我永远不会相信任何“在线应用程序”,因此有很多骗局欺骗了un / pw和您的所有电子邮件地址。使用“已安装的应用程序-HTTPS连接”。

–蒂诺·麦克拉伦(Tino Mclaren)
2015年4月9日在16:10

我同意您需要保持谨慎,但Labnol背后的人是个好人,他发表了大量有用的东西。如果您不信任它,但是有点技术,那么您可以随时获取他从该文章链接到的src代码,然后自己滚动:ctrlq.org/code/…

– RedYeti
19年8月6日在11:19

#6 楼

困惑/非技术/不知道该怎么办?

尝试以下步骤,并感谢https://webapps.stackexchange.com/a/47930/6329

步骤1.
drive.google.com

步骤2。
新电子表格

步骤3。
工具>脚本编辑器

步骤4。
用关闭按钮关闭介绍

步骤5。
粘贴代码

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


步骤6。
将光标放在第一行“ getEmails”一词中

步骤7。
单击播放菜单栏中上方的三角形按钮

步骤8。
它要求您进行身份验证,

步骤9。
再次单击播放按钮如果尚未运行

步骤10。
检查原始电子表格,其中将包含电子邮件。

#7 楼


导航到列表。选择复选框选项下拉列表,然后全选。
[在顶部,您将获得一个超链接选项,以选择列表中的所有对话。单击[更新。]更新:此步骤不起作用,只能让您一次25次,简直是笨蛋!
然后转到“更多”下拉列表下,选择类似这样的过滤器消息。
在过滤器中对话框中,“发件人”文本框将突出显示。这些都是发件人地址。
将其复制。
将其粘贴到诸如Notepad ++或Visual Studio的HTML编辑器中。
现在,您只需要搜索并将单词OR替换为;,即可。
重新复制列表并粘贴到您的消息中。


评论


最好只是给出答案。无需背后的故事。 :-)

– Yosi Mor
13年8月16日在0:07

#8 楼

唯一的方法是


全部导出为.txt(请参阅:将Gmail邮件导出为文本或HTML文件)
遍历所有内容并grep“来自:

注意:如果对步骤1使用imapsize(免费),则将备份另存为“%FROM-电子邮件的发件人”,这样便可以清楚地看到它们您的目录。

评论


我以前很怕那个。不过谢谢!

–布拉德
2010-12-04 4:00

#9 楼

我想出了一种方法,可以使使用Mac Mail和通讯录的Mac用户无需下载额外的软件。这适用于Mac Mail 4.6和Address Book 5.0.3。不知道它是否适用于其他版本。这对于其他IMAP电子邮件程序(例如Thunderbird)可能也类似,但是我不能为此提供担保。

以下步骤如下:


设置Gmail Mac Mail中的帐户。确保传入邮件服务器为“ imap.gmail.com”。您可以在工具栏>“邮件”>“首选项”>“帐户”下找到此邮件。
在Gmail中,为要提取其电子邮件地址的电子邮件创建标签。
在Gmail中,在上面的“标签”中标记所有需要的电子邮件。
在Gmail中,转到“设置”>“标签”,然后选中创建的新标签“在IMAP中显示”的框。
重新启动Mac Mail,以便新的Gmail标签同步。
打开通讯录。如果将通讯录用于通讯录,则需要备份通讯录,因为您需要删除通讯录中的所有通讯录。我相信您可以通过“文件”>“导出”>“地址簿存档”来执行此操作。除了导出Gmail电子邮件外,我不使用通讯簿,因此我无法提供很好的建议。删除通讯录中的联系人,后果自负。
在通讯簿中,删除所有联系人。您应该可以通过选择一个联系人,然后按Command + a并按Delete键来执行此操作。
在Mac Mail中,找到您的IMAP文件夹。窗口左侧应有一列,其中包含所有邮箱。如果未转到顶部工具栏,请选择“视图”>“显示邮箱”或按Command + Shift + M。 IMAP文件夹将位于“提醒”,“ RSS”,“在我的Mac上”等下方的列的底部。您应该看到之前设置的Gmail帐户名称,左侧带有下拉箭头。
在Mac Mail中,单击邮箱旁边的下拉箭头。这将显示一个文件夹列表,并应将您在Gmail中创建的标签显示为文件夹。通过单击选择此文件夹。
在“邮件”窗口中的Mac Mail中,该窗口现在应为您显示Gmail标签的所有电子邮件),在列表中选择所有电子邮件。转到顶部的工具栏,选择“消息”>“将发件人添加到通讯簿”或按Shift + Command + Y。 Gmail标签的所有发件人现在都应该在通讯簿中。
在通讯簿中,您现在可以将联系人导出为vCard,以便在所需的任何程序中使用,方法是转到工具栏,然后选择“文件”>“导出”>“导出vCards”。您甚至可以将其重新导入Google通讯录。如果您需要CSV文件,很遗憾,您将需要将vCard导入另一个程序(Google Contacts可以使用)并重新导出,因为您无法从Mac Mail中导出CSV。

希望有帮助!这有点麻烦,但是对我有用,经过几次操作后很容易。

#10 楼

MineMyMail通过IMAP提取您的所有邮件,然后从中提取电子邮件地址。

您可以通过选择“已发送邮件”文件夹/标签来选择要搜索的文件夹。

评论


MineMyMail是否值得信赖?我去了他们的网站,Chrome浏览器警告我证书已过期。缺少适当的HTTPS证书并要求用户输入其Gmail用户名和密码绝对令人恐惧。这使我怀疑该网站可能会提取电子邮件并将其用于自己的垃圾邮件发送或出售给其他垃圾邮件发送者。

– Moiz Tankiwala
2014年2月3日在18:52

#11 楼

IMAP Addresses Exporter是一个Mac App,可连接到任何IMAP电子邮件帐户并提取每个发件人地址,也从先前设置的文件夹/标签中提取。公平地说,我必须强调它是由我公司开发的。