Exchange server IMAP:Exchange server上按UID范围进行的搜索似乎已中断

Exchange server IMAP:Exchange server上按UID范围进行的搜索似乎已中断,exchange-server,imap,Exchange Server,Imap,我正在使用消息UID值将IMAP邮箱与我的应用程序同步。邮件服务器是Microsoft Exchange server 2013 根据IMAP规范,UID编号应严格按升序排列。但是,有时我发现对UID值范围的搜索结果返回的数字超出了指定的范围 => 'A8 UID SEARCH UID 126095:*' <= '* SEARCH 126026' <= 'A8 OK SEARCH completed. =>“A8 UID搜索UID 126095:” 如果126026是邮箱中的

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

=> 'A8 UID SEARCH UID 126095:*'
<= '* SEARCH 126026'
<= 'A8 OK SEARCH completed.
=>“A8 UID搜索UID 126095:”

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


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

这个答案非常有用。我当时正在测试,想弄明白为什么UID600:*每次都能带回456。然后我添加了另一封测试电子邮件,看到UID600:*返回了新增加的457。因此,在使用范围查询时,无论是否小于指定的范围,都将始终包括最新的电子邮件。谢谢,事情不是这样的。。。如果最后一条消息的UID为456,那么600:*、600:456和456:600是表示同一内容的三种方式,请求其中任何一种都将返回该范围内的所有现有消息,包括两个边界。455:456返回两条消息,455:600返回两条,456:600返回一条,457:600返回零。如果最大UID为457,我使用600:*,我应该只看到UID 457,对吗?@Erkindjiev是的,没错。谢谢,这正是我需要知道的,尽管我在评论中可能没有准确描述它。