当使用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:Developmentapache-tomcat-8.5.12
-Dcatalina.base=C:Developmentapache-tomcat-8.5.12
-Djava.io.tmpdir=C:Developmentapache-tomcat-8.5.12temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=C:Developmentapache-tomcat-8.5.12conflogging.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%的邮件还是照常发送。
我已经检查了远程服务器中的配置,没有任何更改。
感谢所有的回复者。
似乎所有的问题都是由于微软对其租户的基本身份验证策略的更改引起的。
更改帐户设置后,一切恢复正常,电子邮件再次发送。