事情是这样的:我原来在 Mac 自带的邮件客户端 Mail.app 里面配置过 Hotmail 账户,但几乎从来没用过。昨天不小心打开了一下,不想它把我 Hotmail 服务器端收件箱的邮件删得只剩最近一周的了。邮件并没有丢,但是只有本地的副本,服务器端被删了。于是我就开始寻找解决方案。
首先是查找 Mail.app 自己有没有恢复的功能,但没过多久我就放弃了,因为我对 Mail 本身的功能不抱多大希望。
然后是尝试把 Mail 的本地邮件导入到 Outlook 2011 for Mac 。结果,导了好几次,说是成功了但是一封没导。
然后网上有文章说用 Thunderbird 的一个插件可以。于是我就下了 Thunderbird ,也能从 Mail 导入,结果导入完了以后每封邮件变成两封。这也可以接受,要是能恢复到服务器上也行。装上那个插件,结果效果是以我的名义转发给我自己,而且邮件头作为正文显示出来。这应该也算是 Hotmail 的保护措施,不怪那个插件。当然,我也尝试了在 Thunderbird 里直接拖动到文件夹,果然还是不行,只影响本地副本。
刚才说导入到 Outlook 导不进去,导入 Thunderbird 一封变两封。但是我在 Mail 里面新建一个文件夹,然后把收件箱的所有邮件复制一份进去,再用那两个程序导入,就却一切正常了。
这回在 Outlook 直接拖动,果然也是不行。 Outlook 是一款只包含在一些比较高级的 Office 套件中的程序,但是对微软自家的 Hotmail 的支持貌似并不比其他邮件有优势,甚至 Gmail 都支持 Microsoft Exchange 而 Hotmail 只有在移动设备上才支持。
接下来的想法是用 Windows Live Mail 。这个是对 Hotmail 支持最好的客户端,貌似用了一些封闭的接口。但是首先还是要把邮件导入。在导入向导中,它支持三种格式: Outlook Express 6 , Windows Live Mail , Windows Mail 。然后就想用 Outlook for Mac 导出,看看能不能导出上述格式之一。结果这货导出的文件只有一种格式: .olm 。
接下来我就想,既然不能直接导入 Windows Live Mail ,那就先把 Outlook for Mac 导出的文件导入到 Outlook for Windows 吧。我还专门装上了 Trial 版 Outlook ,结果坑爹的是不能导入!! Outlook for Mac 导出的文件不能导入 Outlook for Windows !还有比这更蛋疼的么?
然后,我用 7-zip 试着打开了一下那个 .olm 文件,发现还真能打开。里面每封邮件都是 xml 格式的,还是没法导入。
然后就想着 Mac 下的 Thunderbird 能不能导出可识别的格式。结果没发现导出功能,倒是有另存为文件。保存以后,每封邮件是一个 .eml 文件,这个总该行了吧。但是文件名里面有一些 Mac 的文件系统能用但是 Windows 不行的字符,所以还要把所有重命名。完了以后,每个单独的文件能用 Windows Live Mail 打开,但是用那个导入向导还是导入不了。最后,还是把文件选中,然后拖到 Windows Live Mail 的对应的文件夹里,这回终于好了,而且服务器也同步更新了。这个过程需要等几个小时(有1500多封邮件),而且中间会时常报错,但终于恢复了。
现在我新建了一个“存档”文件夹,以后收件箱里收到邮件,就移到这个文件夹里。
如果服务器支持IMAP应该可以直接把收到的邮件同步回去。我就是这么做的,在Thunderbird中新建欲同步邮箱的IMAP帐户,将收到的邮件复制到该帐户中,就会自动同步到服务器了。不过同步回163邮箱后,日期出了些问题。
关键是 Hotmail 不是对所有客户端都支持 IMAP ,移动设备是支持,但是一般的不支持,像 Outlook for Windows 得需要装一个插件,而别的一般都不支持,除了 Windows Live Mail 。