Gmail IMAP Javamail搜索不会在网络上返回任何邮件

时间:2018-08-15 17:32:25

标签: gmail javamail imap

我正在对通过电子邮件发送链接的Web应用程序进行负载测试。我有一个专门设置为该收件人的Gmail帐户。生成新帐户时,我在收件人电子邮件中添加了一个Guid(例如loadtest_ nmndbiwpdi @ gmaildomain.com)。当我执行测试时,它要么全部成功,要么全部失败,但是失败似乎是随机的。

这是我的搜索摘要:

        if (!inbox.isOpen()) {
            inbox.open(Folder.READ_ONLY);
        }

        SearchTerm toTerm = new RecipientTerm(RecipientType.TO, new InternetAddress(to));
        messages = inbox.search(toTerm);

脚本运行时,它将在100迭代循环中执行此操作,并暂停3秒。如果脚本输出失败,并且imap调试功能反复打开,则会显示以下内容:

A4 SEARCH TO loadtest_nmndbiwpdi@gmaildomain.com ALL
* SEARCH
A4 OK SEARCH completed (Success)

但没有实际结果。在执行期间,但是,我可以在gmail中搜索此收件人,并且它会立即弹出。有什么建议可以深入了解这个问题?

2 个答案:

答案 0 :(得分:0)

Gmail并未完全实现IMAP规范,尤其是对于搜索。 Gmail搜索总是针对整个单词,尽管在这里这不是问题。

您可以尝试使用Gmail-specific support in JavaMail类,例如GmailRawSearchTerm类。

答案 1 :(得分:0)

我实现了本地缓存。我在负载测试方案开始时对其进行初始化,下载最后几天的消息并捕获最近的消息UID(使用gmail imap插件)。会话每次查找电子邮件时,都会在本地缓存中查找。如果不存在,它将设置一个标志,以便其他会话不会与缓存重叠并检索最新消息。

因为它是断断续续的,所以我想给它几天。在过去4天中,它运行良好。我可能可以再走一步,并在文件夹中为新邮件设置一个侦听器,但是现在我很满意gmail只是返回“成功”,但在连续多次imap搜索之后却没有进行搜索。

感谢大家的反馈和建议!