Python IMAP - UID的顺序

时间:2012-09-13 15:34:04

标签: python imap

我正在尝试编写一个简单的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

2 个答案:

答案 0 :(得分:3)

不保证按日期顺序排列。

假设您已将一封最旧的电子邮件从文件夹(邮箱)A移至B并再次将其移回A,则会为其分配新的uid值。

答案 1 :(得分:0)

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