首页 > 解决方案 > 获取大于的 UIDS 时的 Imap 奇怪行为

问题描述

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

查询如下所示:

UID SEARCH UID 13780:*

回复:

* SEARCH 13779
aaaj OK UID SEARCH Completed.

为什么它返回 UID 13779 ?还不到13780!

然后我发送电子邮件,回复如下:

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

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

* SEARCH 13780
aaal OK UID SEARCH Completed.

为什么会这样?

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

为什么它返回较低的 uid 我已经理解,因为最大 uid 低于请求的 uid。但是为什么它第一次返回这个:

* 5 EXISTS
* 4 RECENT

接着:

* SEARCH 13780
aaal OK UID SEARCH Completed.

所以在我的情况下需要 13780 信息,我可以立即获得吗?在第一个查询中没有 EXISTS 和 RECENT 吗?

标签: imap

解决方案


UID SEARCH UID 13780:*并不表示“所有 UID 大于等于 13780”。意思是“13780到邮箱最大UID之间的所有UID”。即,*内部替换为当前最大的 UID。

如果当前最大的UID是UID SEARCH UID 13780:1377913779 UID SEARCH UID 13779:13780,那么命令被解析为m:nn:m

因此,您始终获得邮箱中最大的 UID。


推荐阅读