我如何导出向每个给我发送电子邮件的人的包含电子邮件地址的列表?我已将所有邮件存档。
我如何导出向每个给我发送电子邮件的人的包含电子邮件地址的列表?我已将所有邮件存档。
Answers:
我对所有复杂的答案(包括一些额外的工具)感到惊讶!您收到的每封电子邮件都将其地址添加到Gmail的“联系人”部分的“所有联系人”(而不是“我的联系人”)中。导出那一个,您就完成了(或者我在您的问题中漏了一些东西)。
这是发挥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
函数提取名称以查找重复项。系统文件夹将被忽略,例如INBOX
或All Items
。
注意:脚本可能需要一些时间来执行,这当然取决于电子邮件的数量
更新2017
Starbanana已将其名称更改为Deep-etract-extractor,并且看起来还像改进了App UI并使其可用于多个帐户(刚刚登录到我的应用程序后才发现),更改了以下链接以反映这一点。
原始答案
如果您需要快速的桌面应用程序(而不是脚本),请考虑一下。
我做了很多搜索工作,以查找标签级别的应用程序,然后从deep-email-extractor找到了Gmail Email Exporter 。
这是一个付费应用程序(与它们无关),但价格便宜,您可以从特定标签或所有Gmail帐户中导出电子邮件地址。
因此,在您的情况下,请使用过滤器将收到的所有电子邮件放入标签中,并使用以上内容导出到CSV文件。
基于@ 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);
}
以下应用程序是免费的,并且效果很好!
http://www.labnol.org/internet/extract-gmail-addresses/28037/
逐步尝试以下步骤,并感谢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.检查您的原始电子表格,其中将包含电子邮件。
唯一的方法是
注意:如果对步骤1使用imapsize(免费),然后将备份另存为“%FROM-电子邮件的发件人”,则目录中将它们清晰可见。
我想出了一种使用Mac Mail和地址簿为Mac用户执行此操作的方法,而无需下载其他软件。这适用于Mac Mail 4.6和Address Book 5.0.3。不知道它是否适用于其他版本。这对于其他IMAP电子邮件程序(例如Thunderbird)可能也类似,但是我不能保证。
步骤如下:
希望这可以帮助!这有点麻烦,但是对我有用,经过几次操作后很简单。
MineMyMail通过IMAP提取您的所有邮件,然后从中提取电子邮件地址。
您可以通过选择“已发送邮件”文件夹/标签来选择要搜索的文件夹。
IMAP Addresses Exporter是一个Mac App,可连接到任何IMAP电子邮件帐户并提取每个发件人地址,也从先前设置的文件夹/标签中提取。公平地说,我必须强调它是由我公司开发的。