0

我正在尝试编写一个简单的 IMAP 客户端,并且我想获取一条最新消息。UID 46345 的邮件是我收件箱中的最新邮件,旧邮件的 UID 为 46346。因此,我的代码无法按预期工作!为什么最新消息的 UID 不是最高的?我不应该依赖具有最新日期的最高 UID 吗?

_, data = imap.uid('search', None, "UNSEEN")    
latest_email_uid = data[0].split()[-1]
_, data = imap.uid('fetch', latest_email_uid, '(RFC822.HEADER)')
raw_email = data[0][1]
print raw_email
4

2 回答 2

3

不保证按日期顺序排列。

假设您已将一封最旧的电子邮件从文件夹(邮箱)A 移动到 B,然后再次将其移回 A,那么它将被分配新的 uid 值。

于 2012-09-13T16:49:43.530 回答
0

我不认为 IMAP 协议提供任何保证消息 UID 将按从最旧消息到最新消息的顺序分配。UID 甚至可以不时更改(通常如果 IMAP 服务器必须重新索引邮箱),只要 UIDVALIDITY 更改以通知客户端这一事实。您必须查看消息上的日期标题(或者如果您感兴趣的话,可能是 IMAP INTERNALDATE)并自己对它们进行排序。

于 2012-09-13T15:47:32.417 回答