我需要替代IMAP搜索命令“搜索1:*看不见未删除”,因为电子邮件服务器禁止搜索命令。我尝试使用“ A状态(看不见)”,但它总是返回零,尽管有未读消息。这个命令还有其他选择吗?提前谢谢。
答案 0 :(得分:2)
您的问题是IMAP服务器根本不支持SEARCH
,还是它不喜欢您的特定SEARCH
命令?如果是后者,我们可以简化:
A SEARCH UNSEEN UNDELETED
(因为1:*
是隐含的)。更简单 - 以防服务器根本不喜欢和SEARCH
条款一起 - 将是:
A SEARCH UNSEEN
B SEARCH DELETED
并在代码中逻辑地执行AND。
这种蛮力的做法是:
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命令不应该在上面使用 目前选择的邮箱。