fetchmail在终端中使用从我的 gmail 帐户中提取电子邮件。~/.fetchmailrc的:poll imap.gmail.com protocol POP3
user "someuser@gmail.com" is oren here
password 'verysecretpassword'
Run Code Online (Sandbox Code Playgroud)
(当然使用真实的用户名+密码)。
$ fetchmail。fetchmail: 6.3.26 querying imap.gmail.com (protocol POP3) at Mon 03 Feb 2020 14:34:46 IST: poll started
Trying to connect to <ADDRESS> ... connection failed.
Run Code Online (Sandbox Code Playgroud)
使用 Fetchmail
看起来配置设置为轮询 IMAP 服务器,然后指定 POP3 协议。尝试这样的~/.fetchmailrc文件:
set postmaster "local_user"
set daemon 600
poll pop.gmail.com with proto POP3
user 'gmail_user_name' there with password 'app_password' is local_user here options ssl fetchlimit 400
Run Code Online (Sandbox Code Playgroud)
在哪里:
local_user 是一些无法投递的邮件应该去的本地帐户(永久失败之前的“最后一次努力”)。gmail_user_name是@电子邮件地址左侧的所有内容。app_password是一个专门生成的密码,仅限于 gmail 应用程序(转到此处:https : //myaccount.google.com/并单击Security,然后app passwords生成新的应用程序密码)此时要做什么取决于您的本地设置。Fetchmail 将...获取邮件(显然)...然后将其发送到本地机器的发送系统。如果您有 sendmail(一个非常安全的赌注),这可能有效:
$ fetchmail -d0 -avNk -m "/usr/sbin/sendmail -i -f %F -- %T" pop.gmail.com
Run Code Online (Sandbox Code Playgroud)
邮件应该开始流入。可以使用该mail命令读取邮件或从/var/mail/[username]. 这可能无法一蹴而就;如果地址积累了少量历史记录,则很可能不会。让它完成并检查它是否按预期工作。如果一切看起来都不错,那么是时候fetchmail作为守护进程启动并让它下载整个邮箱了。首先,配置fetchmail适当的轮询间隔和批量大小设置1。
~/.fetchmailrc在线路中配置了轮询间隔daemon 600(即 10 分钟轮询间隔)。fetchlimit 400在设置~/.fetchmailrc下的options一节中poll pop.gmail.com节。这是每次轮询要获取的最大消息数。-d0switch。Fetchmail 应该作为一个真正的守护进程启动,并继续定期下载批量邮件,直到下载整个邮箱。如果您不希望它在下次重新启动之前继续同步,则需要记住终止守护进程。
使用 Google 外卖
您可以使用Google Takeout轻松完成此操作。登录,单击列表顶部的“取消选择”选项,然后向下滚动Mail并选中该选项。您可以选择在一个.zip或.tgz文件中获取数据。当存档可供下载时,他们会向您发送电子邮件。它被包装在一个mbox文件中,但转换为其他格式非常简单。
这可能是完成一次性导出的最简单方法,我认为他们也可以选择设置重复导出。与直接使用开发人员 API 相比,它可能没有提供那么多的控制,但它的麻烦要少得多。
1:我相信谷歌有一些速率限制,所以我添加了一些步骤来适应这些限制。这些是保守值,因为我不确切知道限制是什么(甚至不确定它们是否存在)。如果您了解更多信息,或想对其进行研究,请将这些值调整为您认为最好的值。