MailSendException SSLHandshakeException JavaMail 电子邮件未发送

Posted

技术标签:

【中文标题】MailSendException SSLHandshakeException JavaMail 电子邮件未发送【英文标题】:MailSendException SSLHandshakeException JavaMail emails not being sent 【发布时间】:2021-12-11 22:03:35 【问题描述】:

使用 JavaMail 发送电子邮件时,我收到此异常:

org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Can't send command to SMTP host;
  nested exception is:
    javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake. Failed messages: javax.mail.MessagingException: Can't send command to SMTP host;

我使用的是 Tomcat 8,其中添加了这些参数:

-Dcatalina.home=C:\Development\apache-tomcat-8.5.12
-Dcatalina.base=C:\Development\apache-tomcat-8.5.12
-Djava.io.tmpdir=C:\Development\apache-tomcat-8.5.12\temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:\Development\apache-tomcat-8.5.12\conf\logging.properties
-XX:PermSize=128m
-XX:MaxPermSize=512m
-XX:+CMSClassUnloadingEnabled
-XX:+UseG1GC
-Dmail.smtp.starttls.enable=true 
-Dmail.debug=true
-Dhttps.protocols=TLSv1.1,TLSv1.2

我的 java 邮件属性是:

<property name="javaMailProperties">
  <props>
      <prop key="mail.smtp.auth">true</prop>
      <prop key="mail.smtp.debug">true</prop>
      <prop key="mail.smtp.starttls.enable">true</prop>
  </props>
</property>

我正在使用 Spring Java Mail v.3.2.2。

最奇怪的是,这种配置多年来一直正常工作,但现在突然之间大约 80% 的电子邮件因此而无法发送。但是,其他 20% 的电子邮件照常发送。

我查看了远程服务器中的配置,没有任何更改。

【问题讨论】:

什么都没有改变——除了时间过去了!? (证书过期/续订!?;)您好,欢迎来到Stack Overflow! 您可能希望启用 SSL 调试以查看那里是否显示任何内容。同时与您的 SMTP 服务器的系统管理员联系。 -Djavax.net.debug=ssl:handshake 的第二个动议。什么java版本? Tomcat 8.5 可以在 7 上运行,这是 PermGen 的最后一个版本,至少免费版本 7(通过 7u80)默认禁用 1.0 以上的 TLS 客户端协议,而今天的许多服务器需要 1.1 甚至 1.2 最低,因为 1.0 是如果不是彻底破了,至少严重削弱了。注意https.protocols对邮件完全没有影响,邮件不使用HTTP[S];如果您打算为 SMTP 配置 TLS 版本,请使用 mail.smtp.ssl.protocols 【参考方案1】:

感谢所有回复的人。

似乎所有问题都是由 Microsoft 更改有关其租户的基本身份验证的政策引起的。

在对帐户设置进行一些更改后,一切恢复正常,并再次发送电子邮件。

【讨论】:

以上是关于MailSendException SSLHandshakeException JavaMail 电子邮件未发送的主要内容,如果未能解决你的问题,请参考以下文章

Exception in thread "main" org.springframework.mail.MailSendException; nested exception de

spring集成的javamail出现错误

javamail 发送失败,单独测试正常。 加入action 报以下错误,求解!

解决spring boot JavaMailSender部分收件人错误导致发送失败的问题