Spring-Boot 从 2.7.x 迁移到 3.1.x 会中断邮件发送

问题描述 投票:0回答:1

将一项服务迁移到 Spring-Boot 3.1.1 后,我们在发送电子邮件时看到错误,而以前没有出现过这种错误。

此错误自迁移以来引发,与 SMTP 服务器上的任何证书问题无关(已检查,如果使用以前的版本,它会再次工作)。

我们使用Java17和spring-boot-starter-parent v3.1.1。

2023-08-18 11:31:05.560 ERROR 78703 --- [ntContainer#0-1] c.d.s.portal.service.EmailService        : An error has occurred while sending the mail 

org.springframework.mail.MailSendException: Mail server connection failed. Failed messages: jakarta.mail.MessagingException: Could not convert socket to TLS;
  nested exception is:
    java.io.IOException: Can't verify identity of server: my-smtp-server
Caused by: jakarta.mail.MessagingException: Could not convert socket to TLS
    at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2189)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:766)
    at jakarta.mail.Service.connect(Service.java:342)
    at org.springframework.mail.javamail.JavaMailSenderImpl.connectTransport(JavaMailSenderImpl.java:518)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:437)
    ... 46 common frames omitted
Caused by: java.io.IOException: Can't verify identity of server: my-smtp-server
    at com.sun.mail.util.SocketFetcher.checkServerIdentity(SocketFetcher.java:699)
    at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:636)
    at com.sun.mail.util.SocketFetcher.startTLS(SocketFetcher.java:555)
    at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:2184)
    ... 50 common frames omitted

我已经尝试了以下帖子中的一些建议

我什至尝试将

org.springframework.mail.javamail.JavaMailSender
的使用更改为
org.springframework.mail.MailSender

没有结果,因为同样的错误一次又一次出现。

您知道为什么迁移到 SB v3.x 会导致该服务器识别失败吗? 我们对另一项服务还有另一个问题,现在这两个问题似乎都与 SB 内部 SSL 使用的变化有关(也可能不是)。

spring-boot smtp
1个回答
0
投票

我也遇到了完全相同的问题。据我检查,默认情况下

mail.smtp.ssl.checkserveridentity
false
。现在 3.1 看起来默认是
true
。我再次将其设置为 false 并工作。当然,对于中间人攻击来说,它并不安全。

© www.soinside.com 2019 - 2024. All rights reserved.