当前位置: 首页 > 面试题库 >

如何有效地使用javax.mail API发送批量邮件?&我们可以使用经过身份验证的重用会话来提高速度吗?

严嘉良
2023-03-14
问题内容

我可以使用javax.mail API发送邮件。但是,这里的问题是平均每一封邮件大约需要4.3秒才能发送到目的地。

如果我要依次发送20封邮件,则大约需要86.599秒。对于我的要求,这种方法将行不通。我正在寻找一种可以在更短的时间内发送大量邮件的方法。

当我查看调试日志时,API尝试针对发送的每条消息向SMTP服务器进行身份验证。但是我只创建一个会话,并且对我发送的所有邮件都使用相同的会话。现在我的问题是,每次向smtp服务器进行身份验证时,这是否是一个开销过程?有没有更好的方法?

以下是您可能会发现有用的日志跟踪。

250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
250 ENHANCEDSTATUSCODES
DEBUG SMTP: Found extension "SIZE", arg "35882577"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH XOAUTH2"
DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg ""
DEBUG SMTP: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM 
DEBUG SMTP: AUTH LOGIN command trace suppressed
DEBUG SMTP: AUTH LOGIN succeeded

请让我知道您对此的想法,并对此表示任何帮助。

-纳伦德拉


问题答案:

您如何发送消息?该JavaMail的常见问题表明,静态Transport.send方法将打开每封邮件建立新的连接,因为它是创建一个合适的便捷方法Transport的实例,将其连接,调用sendMessage,然后再次关闭连接。如果您从那里获得了自己的Transport实例,则Session可以连接一次,然后sendMessage反复调用以在一个连接上发送多个消息,最后再发送一次close。遵循(未试用)的内容:

Transport t = session.getTransport();
t.connect();
try {
  for(Message m : messages) {
    m.saveChanges();
    t.sendMessage(m, m.getAllRecipients());
  }
} finally {
  t.close();
}


 类似资料:
  • 我正在尝试使用javamail和smtp发送邮件。当我从我的gmail地址发送邮件时,它对我有效。我改变了从我的交换账户发送的相同代码,但它不起作用。我正在获得身份验证失败异常。 密码 我尝试使用默认端口,即25,但那一次出现了错误,显示了错误的端口号。所以我假设端口号是对的。我尝试了ping主机和它的工作。我尝试的用户名。但总是有同样的例外。请帮我修一下。 提前谢谢 我启动了调试,得到了以下日志

  • 在身份验证等情况下,与会话相比,使用JWTs有什么优势? 它是作为独立方法使用还是在会话中使用?

  • 问题内容: 我正在尝试使用python发送电子邮件(Gmail),但出现以下错误。 Python脚本如下。 问题答案: 你需要先直接说一下: 此外,你应该真正创造以及邮件标题,一个空行,并使用从邮件正文中分离出来作为标志。 例如

  • 在Wordfence文档中说: 过滤器“wordfence_ls_require_captcha”可用于在您选择的情况下禁用captcha。这对于包含RESTendpoint的插件可能很有用,这些endpoint具有不需要captcha的身份验证。必要时,您的过滤器应返回false以绕过captcha要求,或者在需要CAPTCH时返回true 如果我尝试通过JWT进行API调用,我会通过电子邮件收

  • 我已经创建了一个简单的spring boot应用程序,我已经使用KeyCloak对其进行了身份验证。当我调用服务(http://localhost:8080/table1data)时,它会将我重定向到keycloak登录页面,在该页面中插入我的领域用户名和密码,然后返回数据。现在到现在一切都很好。 我想要另一个场景。如果我的用户已经拥有相应领域的有效令牌,并且他希望使用正确的令牌访问相同的URL,