IMAP:在 Exchange 服务器上按 UID 范围搜索似乎已损坏

IMAP: Search by a UID range on Exchange server seems to be broken

我正在使用消息 UID 值将 IMAP 邮箱与我的应用程序同步。邮件服务器是 Microsoft Exchange Server 2013。
根据 IMAP 规范,UID 编号应该严格按照升序排列。但是,有时我发现 UID 值范围的搜索结果 returns 超出指定范围的数字。

=> 'A8 UID SEARCH UID 126095:*'
<= '* SEARCH 126026'
<= 'A8 OK SEARCH completed.

我觉得这像是一个错误。有没有人遇到过这个问题,有什么办法可以解决吗?

如果 126026 是邮箱中的最高 UID,则该结果是合法的。您可以尝试使用任何 IMAP 服务器。将一封邮件放入新的空邮箱,然后 运行 a uid search uid 999999:*a uid search uid 2:1a uid search uid 1:2。关键是1:2和2:1是一样的; UID 参数是集合。

当新邮件添加到邮箱时,服务器需要按严格的升序分配 UID。客户可以按任何顺序自由引用 消息。 (请注意,服务器可能 return 消息的顺序与客户端命令中的顺序不同。)