IMAP COPY command - uid and Message-Id
I understood that UID changes but the Message-Id will not be changed during any operation on a particular mail. However, after some operations I came up with this case:
Lets assume I have a total of 2000 emails
in my INBOX
. If I copy the 1000th
email with UID 1000
and Message-Id 1000
to my Trash
mailbox and then I copy that back to the INBOX
, the UID will change to 2000 and Message-Id to 2000; the current for that folder. Then, regardless of the date that email will be at 开发者_开发问答the top.
Now the question is, if I . fetch 1990:2000 fast
(the last 10 emails), I'll get the that particular email among the 10 fetched. How would you fetch the last 10 based on the date without having to fetch 2000 emails and then sort them out by date?
If the IMAP server supports it, you can use the SORT command for this, as descibed in RFC 5256. The specific command you're looking for is probably:
C: A11 SORT (REVERSE DATE) UTF-8 ALL
S: * SORT 5 3 4 1 2
S: A11 OK SORT completed
The server response is a list of message sequence numbers that you can use for a subsequent fetch.
If your server supports the SORT
extension (modern IMAP servers do), it will be announced in response to the CAPABILITY
command. Here's a response from the ancient version of Courier-IMAP I'm running:
CAPABILITY
* CAPABILITY IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES
SORT QUOTA LOGIN IDLE ACL ACL2=UNION STARTTLS
精彩评论