我了解UID已更改,但在特定邮件的任何操作期间都不会更改Message-Id。然而,经过一些操作后,我想出了这个案例:
假设我的total of 2000 emails
中有INBOX
。如果我将带有1000th
和UID 1000
的{{1}}电子邮件复制到我的Message-Id 1000
邮箱,然后将其复制回Trash
,则UID将更改为2000和Message-Id到2000;该文件夹的当前值。然后,无论电子邮件将在最顶端的日期。
现在的问题是,如果我INBOX
(最近10封电子邮件),我会在10个内容中收到该特定电子邮件。您如何根据日期获取最后10个,而不必提取2000封电子邮件,然后按日期排序?
答案 0 :(得分:2)
如果IMAP服务器支持它,您可以使用SORT命令,如RFC 5256中所述。您正在寻找的具体命令可能是:
C: A11 SORT (REVERSE DATE) UTF-8 ALL
S: * SORT 5 3 4 1 2
S: A11 OK SORT completed
服务器响应是一个消息序列号列表,您可以将其用于后续提取。
如果您的服务器支持SORT
扩展(现代IMAP服务器),则会响应CAPABILITY
命令宣布它。以下是我正在运行的古代版Courier-IMAP的回复:
CAPABILITY
* CAPABILITY IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES
SORT QUOTA LOGIN IDLE ACL ACL2=UNION STARTTLS