2011-03-22 86 views
1

由于电子邮件服务器禁止搜索命令,因此我需要IMAP搜索命令“搜索1:*未看到未删除”的替代方法。我尝试使用“状态(不可见)”,但它总是返回零,虽然有未读消息。这个命令有没有其他选择?提前致谢。IMAP搜索命令的替代方案

+0

你是什么意思的“禁止搜索命令”?你在做自己的IMAP客户端还是使用JavaMail? – dkarp 2011-03-22 14:23:20

+0

你好dkarp,我使用k9mail作为我的电子邮件客户端。我发现搜索命令缺少uid参数。我没有使用“全部搜索”,而是使用了“全部搜索结果”,它起作用。 – exception01 2011-03-24 11:17:29

回答

2

您的问题是IMAP服务器根本不支持SEARCH,或者它不喜欢您特定的SEARCH命令?如果是后者,我们可以简化:

A SEARCH UNSEEN UNDELETED 

(如1:*是隐含的)。更简单 - 只是在情况下,服务器不喜欢和荷兰国际集团SEARCH方面一起的话 - 是:

A SEARCH UNSEEN 
B SEARCH DELETED 

和逻辑做,在你的代码。

做它的蛮力的方法是:

C UID FETCH 1:* FLAGS 

,然后挑选出既不\Seen也不\Deleted所有的人。 (我建议UID FETCH,因为类似的FETCH命令将在一个空文件夹返回BAD。)

此外,you're not supposed to call the STATUS command on the currently-selected folder

注:STATUS命令的目的是访问比其他邮箱的 状态当前选择的 邮箱。由于STATUS命令可能导致 邮箱在内部打开,并且由于此 信息可通过选定的 邮箱上的其他方式获得,所以在当前选定的邮箱上不应使用STATUS命令。

+0

顺便说一句,谢谢你的答案。 UID是关键! – exception01 2011-03-24 11:30:13