我正在使用 Java Mail api 访问 gmail 帐户(未修复)。我需要在所有邮件中搜索给定的 Mail id ()。搜索应在具有给定 ID 的消息第一次出现时终止(优化:只应存在具有给定 ID 的单个邮件)
我当然想跳过“所有邮件”文件夹。
最简单的方法是:
- 获取默认文件夹
- 默认获取所有文件夹。
- 在当前文件夹中使用 MessageIDTerm 搜索
- 如果未找到消息,则对子文件夹递归重复步骤 2
- 否则返回找到的文件夹。
这会导致大量不必要的服务器调用浪费,有没有人有更优化的方法?
自从我搞砸所有这些东西以来已经有很多年了,但你应该能够:
IMAP4 UID命令搜索给定的 id(或 id 范围)。参考RFC3501部分6.4.8doCommand(),IMAPFolder并根据需要在您的文件夹中重复使用。folder.list("*");
这是一种递归返回所有文件夹列表的方法。所以我只需要为文件夹运行 1 个循环!当然,搜索中找到的每条消息都有一个循环。