响应消息:javax.mail.MessageRemovedException:无法在 POP3Message.getContentStream 中检索消息 #1

Response message: javax.mail.MessageRemovedException: can't retrieve message #1 in POP3Message.getContentStream

我正在尝试从 JMeter 应用程序实施邮件协议。 SMTP 工作正常。在 POP3 的情况下,我收到一些线程的上述错误。

尝试过的解决方案:

  1. 认证分配给 POP3
  2. 增加了验证超时的值
  3. 登录错误已解决

问题:为什么在 POP3 实现过程中有些线程没有从输入流中获取消息?

作为协议,POP 有两大假设:首先,当您查看邮箱时,没有其他任何内容会修改它。其次,一旦您查看了消息,消息就会被删除或存档或其他内容(服务器准确地决定什么,客户端可以通过采取一些非默认操作来选择退出,我忘记了细节)。这种设计出现在每个服务器和每个客户端库中。您在多个线程中打开邮箱,因此您的服务器、客户端库或两者都会出现问题。

您可以尝试使用单线程,您可以更改为 IMAP,或者您可以尝试调查您的客户端和服务器以避开您遇到的问题。这三个都可以,甚至第三个。

很可能您在 > 1 个线程中使用相同的凭据(邮箱),这对我来说看起来不像是正常用例,因此请确保 parameterize your JMeter test using i.e. CSV Data Set Config 确保不同的线程(虚拟用户)使用不同的凭据,因此访问不同的邮箱。


如果您的测试已经假定不同的登录,您可以尝试通过启用调试日志记录来确定发生了什么,为了做到这一点,可以通过添加将 mail.debug 属性 设置为 true system.properties 文件的下一行:

mail.debug=true

或通过 -D 命令行参数启动提供上述 属性 的 JMeter

jmeter -Dmail.debug=true -n -t test.jmx -l result.jtl

更多信息: