基本上,第一条消息将在另一个IMAP会话/位置下保持第一位?
UID将永远保持不变,只要UIDVALIDITY不变(UIDVALIDITY改变的情况非常罕见)
MSGNO(从1到“EXISTS”的序列)对于此特定连接是本地的。 如果您的客户端打开多个连接,MSGNO实际上可以在每个不同。
也就是说,MSGNO和UID总是以相同的方式sorting。 更高的MSGNO将始终映射到更高的UID。
某些IMAP命令可能会导致MSGNO更改 – 但您将始终看到一个EXPUNGE结果,告诉您哪一个被删除 – 所有更高的数字在该点处减1。 如果新消息被添加,你会得到一个更新的EXISTS以及告诉你多less。
(所有这些变化,如果你“启用QRESYNC”和服务器支持它,但这是基本的IMAP规则)。
正如Janne在评论中指出的那样–RFC3501包含了关于哪些命令被允许改变MSGNO,哪些命令必须保留它的所有细节,即使一些MSGNO现在指向被删除的消息。
简而言之,如果您在同一会话中的不同会话或不同连接之间进行交互,请使用这些命令的UID变体,这样您就会安全无虞。