yosemite 下的 imap 邮件时间显示不正确该如何解决?

2014-10-23 15:11:44 +08:00
 pbjacob
昨天我误删除了邮件服务器上的全部邮件,我在win下有foxmail的本地存档,于是我在windows下用foxmail软件,通过建立IMAP账号的方式,把邮件重新上传回邮件服务器。
上传完成后用web打开邮件系统,邮件都正常上传了,邮件时间也都是正确的。

我在yosemite上的原生mail应用建立POP的账号收邮件,也都正常接收,时间也都是正确的。

但是!我用yosemite的原生Mail应用新建立一个IMAP的账号,发现所有邮件的时间戳都不是邮件本身的时间,而是我昨天返传回邮件服务时的时间!

为了查找邮件时间显示的问题出在了哪,我做了如下尝试:

用web登录邮箱,发现所有邮件的时间都是正确的。
在mac原生mail下用pop方式接收邮件,时间正确。
在win下使用foxmail登录邮箱,使用imap接收,时间正确。
在mac下使用foxmail登录邮箱,使用imap接收,时间正确。
进系统 用户名/Library/Mail/V2/...../Message中找到邮件文件,预览一下,发现时间竟然也都是正确的……

于是,我的理解:貌似一份邮件有两个时间属性,一个时间属性包含在邮件信息本身,我叫它“历史时间”,即邮件发送的时间,这个相当于写死在邮件文件里,不会变;另一个时间属性存在于邮件服务器上,记录了邮件是哪个时间点进入这个邮箱的。通常情况下这两个时间应该是一致或接近的,但我现在的情况下(向服务器回传了邮件),第二个时间属性就会发生变化。

而(对于我来说不幸的是)yosemite的mail在IMAP方式下选择了使用后者作为邮件箱显示的时间,我的邮件清一色都是刚刚上传回服务器时的时间,而不是它们真实的历史时间。(但同时这些邮件文件上的历史时间并没有被破坏,依然存在,只是不显示出来了)


综上,对于我这种由于误删了邮件,并把备份邮件再回传到邮件服务器的人来说,我如何才能在yosemite下建立IMAP账户并使其显示正确的邮件的历史时间,而不是显示备份回传服务器时的时间呢?或者说,我还有什么好办法可以让备份的邮件回传到邮件服务器上?

谢谢!
3155 次点击
所在节点    macOS
3 条回复
SoloCompany
2014-10-23 23:52:45 +08:00
IMAP 协议有一个属性叫 INTERNALDATE 区别于信头里面的 Date 一般表示的是邮件进入邮箱的时间(也就是一般说你收到邮件的时间),这个时间是不存在于信头的,是服务器自己存储的,POP3 协议没有这些扩展反而无法获取到这个时间

对于你现在这种情况估计是两点情况所导致
1. Apple 的 mail.app 只支持一个索引时间
2. Apple 的 mail.app 在使用 imap 协议时,没有提供配置选项是使用信头时间还是 INTERNALDATE


那么解决方案也有4个
1. 你需要找一个高级点的 APP,支持在使用 IMAP 导入的时候,同时设置服务器的 INTERNALDATE (可以是之前下载时所保存的,也可以是强行设置成和信头 Date 一致)
前提是你的服务商要支持 INTERNALDATE 可写,而不是直接忽略掉请求数据
2. 给你的服务提供商发反馈,让他们提供解决方案(就是 IMAP 导入的时候能尽量保留 INTERNALDATE,比如可以从信头的 Received 字段中恢复)
3. 找苹果发反馈,让他们提供 IMAP 配置选项(不要 INTERNALDATE 要信头 Date)
4. 自己动手做个 IMAP 协议中转(当然这个需要你有强大的动手能力)


我就只能帮你到这了
pbjacob
2014-10-24 00:43:55 +08:00
@SoloCompany
十分感谢!至少让我更明白这其中的缘由了。

对于您提供的4个解决方案,我倒着说吧:
4. 这个貌似有难度,先不考虑了
3. 我不是开发者,我的mac也过了电话保修了,我都找不到可以向苹果反馈的途径,尤其是这种略带技术的问题,感觉这种大公司都不会理会我这种小问题的……
2. 这个我已经发邮件给网络中心的工作人员了,看他们怎么回复处理吧。
1. 我十分想问一下,真的存在这种高级的APP么?哪怕是windows下的也行啊!如果有的话,我倒是真想尝试一下,毕竟能帮很大的忙呢。

再次谢谢!
SoloCompany
2014-10-24 01:08:02 +08:00
@pbjacob
首先你要确保你备份的邮件是 eml 后缀的(用文本编辑器很容易确认格式)

apple 的 mail.app 是可以导入 eml 文件的
但比较郁闷的是,它不支持用拖放导入,导入功能(文件/导入邮箱。。。。)也没有提供批量导入 eml 的功能
但如果你只需要导入一个 eml 是可行的,方法就是双击打开(用 mail.app),然后选择菜单(邮件/拷贝到/收件箱),但是如果有很多个 eml 文件这样导入会很累

我已经测试过用用 Mail.app 这样导入的 eml 时间是正确的(但我不确定是否和邮件服务商有关,会不会换了一家服务商又会时间错了)

然后我确认 AirMail 是可以用拖放来导入 eml 文件的,但就是界面比较挫,拖放之后没有任何反馈,其实已经在后台执行了,如果一不小心多次操作就会重复导入,至于结果正确不正确,这就需要你自己亲自去实验了

有一点可以肯定的是,邮件服务商是可以帮你解决这个问题的,关键部分还是在你导入邮件的时候服务器的处理上,但服务商有没有能力或者会不会帮你解决就是另一个问题了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/141014

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX