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