通过 IMAP 或 POP3 下载并存档自定义域中的所有邮箱 + 附件

通过 IMAP 或 POP3 下载并存档自定义域中的所有邮箱 + 附件

我有一个网站,打算放弃,目前由某家公司托管。我想保留我所有的电子邮件,但他们没有导出电子邮件的选项。

如何下载所有邮箱中的所有电子邮件及其附件?

我不想被一个邮件客户端所束缚。如果每封邮件 + 附件都作为文本文件 + 附件文件保存在单独的文件夹/档案中,那么我将不受特定邮件客户端的约束来阅读它们,从而获得超级加分。

我更喜欢使用 IMAP因为如果出现问题,电子邮件仍然会存在,我可以再试一次。

答案1

有几种方法可以实现您的目标,我将尝试展示其中的一些。

请注意,有些方法(如果不是全部)涉及使用电子邮件客户端软件,但决定使用哪种方法是暂时的,因为您以后可以重新导入数据或使用我所知道的任何其他电子邮件软件处理数据,甚至根本不需要电子邮件客户端。

在下面的示例中,我使用 Thunderbird 作为 IMAP 和 POP3 客户端,因为我比 Outlook 及其同事更了解它。

话虽如此:

1)转移到您自己的IMAP服务器

对于这种情况,我最喜欢的就是这个。无论如何,我都不想让我的提供商保留消息……

因此,您可以设置自己的 IMAP 服务器。根据您的需要,这可能需要一些知识(例如,在 Linux 下设置我最喜欢的 Cyrus Imapd),也可能非常简单(例如,在 Windows 下设置 hMailServer,我也在我的一个客户端上非常可靠地运行它,该客户端有 100 GB 的消息、数百个嵌套文件夹和超过 100,000 条消息)。

然后将 Thunderbird 连接到您当前的服务器和刚刚设置的新服务器,并将所有文件夹和消息从旧服务器复制到新服务器。这可能有点繁琐,因为 Thunderbird 有时会拒绝在不同的名称空间/服务器之间复制文件夹结构,但如果您没有很多嵌套文件夹,这是最简单的方法。

如果您有很多嵌套文件夹,您可能希望使用 Outlook 来完成这部分工作。我以前用过它,据我所知,它在递归复制大型文件夹结构方面没有任何问题。[题外话:这是 Outlook 远远优于 Thunderbird 的一个关键点,但由于它的其他优势,我会坚持使用 Thunderbird]。

如果您不想使用电子邮件客户端,可以使用专门的脚本或命令行工具;imapsync例如,查看。但请注意:它们比普通的电子邮件客户端更难使用。

完成此操作后,您已将所有 IMAP 消息复制到完全由您控制的 IMAP 服务器上,并且您可以将每个支持 IMAP 的电子邮件客户端软件连接到该服务器并处理您的旧消息。

2)转移到 Thunderbird 的“本地文件夹”

如果您曾经使用过 Thunderbird,您可能已经注意到帐户列表中有一个名为“本地文件夹”的部分。其中包含的文件夹结构和消息通常由所谓格式的文件支持mbox。这些文件通常位于 Thunderbird 配置文件中,而配置文件又通常位于您的 Windows 用户配置文件目录中。

因此,您只需将 Thunderbird 连接到您当前的 IMAP 服务器并将所有文件夹和邮件复制到“本地文件夹”即可。然后,您mbox的本地磁盘上就会有包含所有文件夹和邮件的文件。

mbox据我所知,大多数其他电子邮件客户端都可以理解该文件格式,因此您可以将这些文件导入到此类客户端中。

此外,mbox是面向文本的,因此理论上,您可以通过在文本编辑器中打开这些文件来直接处理它们。这很好,但在实践中没有任何效果,因为您可能不喜欢需要在 HTML 标记之间查找实际消息文本,或者将附件从 base64 解码为图片才能查看它们,等等。此外,在 中mbox,文件夹中的所有消息(包括附件)都塞进一个大文件中。

不过,如果您希望将所有消息放在一个或多个大mbox文件中,并且可以轻松地与用户配置文件一起备份,并且您准备使用支持它的众多软件客户端之一来处理它们,那么它会很方便。

3)同步和离线工作

我知道的每个 IMAP 客户端(包括 Thunderbird)都提供将 IMAP 消息同步到本地磁盘的功能,这样搜索变得更快,并且即使您与 IMAP 服务器断开连接时也可以处理消息。

在同步过程中,所有文件夹和邮件都将下载到您的本地磁盘,即使在关闭当前 IMAP 服务器很久之后,您也可以正常使用它们。不过,也存在一些缺陷:

首先,取决于你的软件,你可能必须告诉软件哪个您要离线使用的文件夹。您必须小心谨慎,因为如果您忘记在其中添加文件夹,则在关闭当前 IMAP 服务器后,相应的邮件将会丢失。

其次,我从未尝试过,也不知道当您首先让消息与当前 IMAP 服务器同步,然后离线工作并关闭该服务器,然后将相应帐户重新连接到另一个 IMAP 服务器时会发生什么。

因此,如果你决定这样做,你最终应该确保包含同步消息存档的帐户绝不连接到另一个 IMAP 服务器。

该方法的另一个缺点是同步的消息不一定以其他电子邮件客户端可以理解的格式存储。我真的不确定,但我认为您需要同步消息的同一客户端才能处理它们。

总而言之,我不鼓励这种方法。

4)将每条消息单独存储在普通文件系统中

有一种文件格式用于存储单个电子邮件消息;令人惊讶的是,文件扩展名是.eml。您只需将所有消息从程序窗口拖到 Windows 文件资源管理器中的任意文件夹中,即可轻松“导出”Thunderbird 中的所有消息。使用 Thunderbird,一次选择多条消息并将它们拖到文件夹中即可正常工作 - 每条消息都会变成一个单独的.eml文件。

需要澄清的是,这些.eml文件也是文本文件(就像这些mbox文件一样),因此您可以使用任何文本编辑器打开它们。与这些.mbox文件一样,这不是一个好主意(除非出于特殊目的),因为您最终必须从 HTML 文档中挑选实际的消息文本,如果标题行包含特殊字符(如德语变音符号),则对其进行解码,解码附件等等。

然而,这些.eml文件总是包含完全的消息,包括附件和元数据。

另一件好事是,您可以非常轻松地将它们重新导入到其他电子邮件客户端中,至少在大多数客户端中是这样:对于 Thunderbird,只需将它们从 Windows 文件资源管理器拖到程序窗口中,它们就会再次变成正常消息,包括附件,并保留所有元数据信息/标题(收到的时间等)。

并非每个邮件客户端都支持直接拖放.eml消息,但有大量插件、脚本和帮助程序,例如 Outlook。

因此,如果您确实坚持将电子邮件和附件分别保存在文件系统中(我个人不会这样做),那么这是一种可行的方法:

  • 将 Thunderbird 连接到您当前的 IMAP 服务器
  • 在 Windows 文件系统中重新创建 IMAP 文件夹结构
  • 从每封邮件中提取每个附件并将其保存在文件系统的适当位置;请注意,您可以将附件保留在邮件中,也可以在执行此操作时从邮件中删除附件
  • 从 Thunderbird 的程序窗口中选择邮件,并将其拖到 Windows 文件资源管理器中的适当位置;根据您上一步的操作,该邮件要么仍然包含附件(然后您将拥有两个附件,因为您已经分别保存了它们),要么不包含附件

旁注:在 Thunderbird 中,您甚至可以直接打开将每个帐户(同步 IMAP、POP3、本地文件夹)中的每条消息保存为.eml,但我强烈建议您不要这样做,因为这仍然处于实验阶段。

欲了解更多信息,请考虑以下事项: https://support.mozilla.org/en-US/kb/maildir-thunderbird

5)通过 POP3 下载

我理解你对这种方法的担忧,但它也有好处。就我个人而言,我更喜欢移动文件夹和邮件,而不是复制它们,因为当你复制数十万封邮件嵌套在数千个文件夹中,很难验证您是否确实复制了全部消息全部文件夹。

相反,当我移动文件夹和消息,即使在进程停滞时,我也可以轻松地看到我是否丢失了某些东西(在这种情况下,它仍然会在旧服务器上)或者没有丢失(在这种情况下,旧服务器上不会留下任何消息)。

请注意,大多数电子邮件客户端显示的“邮件数量”并不可靠,因为你永远无法知道客户端下载了多少邮件(标题),尤其是当相应的文件夹最近被大量邮件填满时,就像复制/移动时发生的那样。所以你真的应该不是使用该“消息数”来检查旧服务器的副本是否完整。

话虽如此,如果您使用 Thunderbird 通过 POP3 从旧服务器获取消息,这些消息也将由位于 Windows 用户配置文件中的 Thunderbird 配置文件中的文件支持,因此您可以很好地将此称为完整下载。

我不确定 Thunderbird 存储这些消息的格式(可能是mbox其中一种,但这只是一种不经思考的猜测),所以很可能您无法将该存档直接导入其他电子邮件客户端。

另一方面,我完全相信有很多实用程序和转换器可以将 POP3 存档导入您想要使用的任何其他电子邮件软件,其中 Thunderbird 本身就是首选:没有什么可以阻止您将所有邮件从 POP3 帐户复制或移动到其他 IMAP 帐户,然后您可以从任何其他支持 IMAP 的电子邮件客户端进行连接。同样,您可以轻松地将所有邮件从 POP3 帐户复制/移动到上述“本地文件夹”部分,并以mbox格式存储它们。

最后要说的是,Thunderbird 有几种扩展可以处理数据导出和导入(包括帐户信息、消息等)。但是,我不了解它们,所以我无法判断它们是否可靠。我从未使用过它们,因为有太多更好的方法来复制或移动邮件存档。

我希望上面显示的方法之一适合您...

相关内容