我想在两个 GMail 帐户之间传输约 500 封邮件,从 A 到 B。这些邮件相当大,平均约 5 MB。它们跨越 10 年,我已将它们按年份拆分到 A 上的单独邮箱(标签)中。
然后我尝试使用 Thunderbird 和 IMAP 传输第一年(大约 50 条消息)。12 条消息后失败。我尝试了几次,每次都是 12 条消息后失败,都是同样的 12 条消息(Thundebird 按照从最新到最旧的顺序传输消息,与我对邮箱的排序无关)。
然后我尝试同步/下载所有消息并离线,然后在离线时进行传输。只要我处于离线状态,传输工作正常/看起来正常,但一旦我再次上线并且 Thunderbird 同步了更改,则只会传输相同的 12 条消息。
现在我取消选择已传输的 12 条消息并尝试(几次,每次结果相同)传输剩余的 38 条消息。37 条消息传输顺利,迫使我手动查找剩下的罪魁祸首。
最后我手动传输了最后一条消息 - 第一次尝试也传输成功。WTF!?!?!?
现在我尝试传输下一年的消息,结果还是一样。传输了一堆消息,然后失败了。如果我重复此操作,在失败之前会传输完全相同的消息。如果我尝试传输剩余的消息,则会传输另一堆消息,然后失败。一次又一次。
有没有办法,使用 Thunderbird 或其他工具,使这些传输稳定?我认为,理想情况下,应该有一个脚本,每次传输一条消息,然后验证传输是否成功。
编辑:经过更多的反复试验后,我得出了一些结论:
- 我花了几个小时尝试传输 180 条消息,但每次“会话”只传输了 2-5 条(我选择了源帐户中的所有消息并将其复制到目标帐户)。
做完这些后,我把它放在一边一天。当我恢复时,我尝试传输 50 条消息 - 第一次尝试就成功了。我又复制了 50 条消息,再次成功。重复几次(执行这些复制操作时,我按年份划分消息),完全没有问题。
我思考我前一天遇到的问题可能是 GMail 允许的连接/会话数量有限,如果失败几次,连接就会保持打开状态,从而导致问题。当我将工作搁置一天时,这些停滞的连接可能已经超时并被释放,从而使执行这些复制变得“更容易”或更稳定。
- 我还编写了一个简陋的 Applescript,允许我一次复制一条消息。这“解决”了第一个问题。
它非常基础,它只发送击键、向上/向下箭头然后Message
→Copy to [destination mailbox] again
要使用它,您首先必须手动将消息从源复制到目标邮箱,以便菜单Copy to
选项正确“设置”。
我相信您可以使用 Windows(如 Autokey)和 Linux 可用的脚本选项做类似的事情。
如果我需要再次使用它,我会让算法稍微智能一些:
- 按邮件大小手动对邮箱进行排序
- 从最小的信息开始
- 在每个循环中将睡眠定时器增加 5 秒或类似的时间(取决于您要传输的消息的大小分布 - 在我的情况下是 500 kB 到 20 MB)。这样,您就不需要等待 2 分钟才能传输所有消息。
脚本如下:
tell application "Thunderbird"
activate
delay 2
repeat 70 times
tell application "System Events" to keystroke "m" using {command down, option down}
delay 117
tell application "System Events" to key code 126 --arrow up
delay 1
end repeat
beep
end tell
答案1
使用 Gmail 的 Web 界面和导入邮件和联系人。传输将由 Gmail 服务器完成,不会使用您的计算机。
发送 Gmail 帐户
- 打开“设置”,进入“转发和 POP/IMAP
- 选择“对所有邮件启用 POP(包括已下载的邮件)”
- 点击“保存更改”
- 搁笔
接收 Gmail 账户
- 前往“设置”>“帐户和导入”
- 选择“导入邮件和联系人”
- 输入发送 Gmail 帐户的电子邮件地址,然后选择继续
- 在第 1 步屏幕上再次选择“继续”
- 登录接收 Gmail 账户
- 出现提示时选择“允许”,授予 Gmail 访问权限
- 关闭显示“身份验证成功的窗口”。
- 选择开始导入
- 选择“确定”返回 Gmail 的设置页面。
等待 Gmail 在两个 Gmail 帐户之间传输所有电子邮件。您可以从“帐户和导入”屏幕监控该过程。