【发布时间】:2019-01-22 14:55:11
【问题描述】:
我正在对通过电子邮件发送链接的 Web 应用程序进行负载测试。我有一个专门设置为收件人的 gmail 帐户。在生成新帐户时,我会在收件人电子邮件中添加一个 guid(例如 loadtest_nmndbiwpdi@gmaildomain.com)。当我执行测试时,它要么完全成功,要么完全失败,但失败似乎很随机。
这是我的搜索 sn-p:
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 中搜索此收件人,然后它会立即弹出。有什么建议可以深入了解这一点吗?
【问题讨论】:
-
您始终可以使用 Gmail 特定的搜索语法,它应该运行与 Gmail 相同的搜索。请参阅 Gmail IMAP 扩展程序。不知道JavaMail是否原生支持。
-
嗨,Max,感谢您的建议。我切换到 GmailRawSearchTerm 并且看到了相同的行为。我也尝试了 pop 但问题是我第一次加载时会拉出所有内容并且似乎进行客户端搜索,然后后续搜索什么也不返回。这有点让我相信 gmail 正在(悄悄地)鼓励我不要将它们用作数据库,并且我应该在本地缓存所有电子邮件并在那里搜索。
-
不是那个,是POP3不支持远程搜索。该协议非常非常愚蠢。
-
他们的 IMAP 服务器可能有问题。您可以自己取所有信封并进行搜索。 UID 总是会增加,因此您可以随时查看最新消息。
标签: gmail jakarta-mail imap