当获取 UIDS 大于

Imap strange behavior when fetch UIDS greater than

我尝试从 imap 服务器获取大于收件箱文件夹中特定 uid 的 uid。

查询如下:

UID SEARCH UID 13780:*

回复:

* SEARCH 13779
aaaj OK UID SEARCH Completed.

为什么 return UID 13779?不到13780!

然后我发了邮件,回复如下:

* SEARCH 13779
* 5 EXISTS
* 4 RECENT
aaak OK UID SEARCH Completed.

下一次请求后,响应如下:

* SEARCH 13780
aaal OK UID SEARCH Completed.

为什么会这样?

在所有请求期间,我保持会话打开。

为什么它 return 降低了 uid 我明白了,因为最大 uid 低于请求的 uid。但是为什么 return 这是第一次:

* 5 EXISTS
* 4 RECENT

然后:

* SEARCH 13780
aaal OK UID SEARCH Completed.

所以13780是我的情况需要的信息,我可以马上拿到吗?在第一个查询中没有 EXISTS 和 RECENT ?

UID SEARCH UID 13780:* 并不代表 "all UIDs greater than or equal to 13780"。意思是"all UIDs between 13780 and the largest UID in the mailbox"。也就是说,* 在内部被替换为当前最大的 UID。

如果当前最大的 UID 是 13779,则命令被解析为 UID SEARCH UID 13780:13779,相当于 UID SEARCH UID 13779:13780,按照规范范围 m:nn:m是等价的。

因此,您总是获得邮箱中最大的 UID。