我已经研究了该主题几天,但我在网上找到的答案都没有对我有用。
上下文:我有一个Spring Boot Web应用程序,该应用程序使用Java Mail API和Spring Boot Starter Mail发送自动电子邮件通知。
它使用带有GSuite帐户的GMail SMTP服务器。我最近升级为使用Spring 5.0.6和Spring Boot 2.0.2,并且电子邮件发送停止了工作。
一些线索:
发送电子邮件的Java代码与以前相同
Gmail SMTP仍然可以正常工作(从另一台使用旧版应用程序且具有相同设置和身份验证的VM,可以正确发送电子邮件)。
除非我丢失了某些内容,否则应用程序配置与以前相同
发生了变化的事情:
升级到Spring 5.0.6
升级到Spring Boot 2.0.2
Java代码中许多地方的更改,以适应此升级并在应用程序的其他部分中添加功能
VM的IP地址与以前不同(AWS EC2实例)
以下是pom.xml中的相关依赖项:
<!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
这是与Spring邮件相关的application.yml:
spring:
mail:
host: ${FT_MAIL_SMTP_HOST}
port: ${FT_MAIL_SMTP_PORT}
username: ${FT_MAIL_SMTP_USERNAME}
password: ${FT_MAIL_SMTP_PASSWORD}
debug: false
properties:
mail:
smtp:
starttls:
enable: ${FT_MAIL_SMTP_STARTTLS}
required: ${FT_MAIL_SMTP_TLSREQUIRED}
auth: ${FT_MAIL_SMTP_AUTH}
connectiontimeout: ${FT_MAIL_SMTP_CONN_TIMEOUT}
timeout: ${FT_MAIL_SMTP_TIMEOUT}
writetimeout: ${FT_MAIL_SMTP_WRITE_TIMEOUT}
这些变量在环境中定义:
FT_MAIL_SMTP_HOST=smtp.gmail.com
FT_MAIL_SMTP_PORT=587
FT_MAIL_SMTP_USERNAME=myaccount@myapp.com
FT_MAIL_SMTP_PASSWORD=mypassword
FT_MAIL_SMTP_STARTTLS=true
FT_MAIL_SMTP_TLSREQUIRED=true
FT_MAIL_SMTP_AUTH=true
FT_MAIL_SMTP_CONN_TIMEOUT=5000
FT_MAIL_SMTP_TIMEOUT=5000
FT_MAIL_SMTP_WRITE_TIMEOUT=5000
我尝试设置不正确的SMTP服务器或错误的凭据,这使连接失败,因此我认为服务器和凭据是正确的,并且在成功连接后会发生错误。
所使用的帐户尚未达到上限,因为另一个VM使用相同的凭据并可以毫无问题地发送电子邮件。
我尝试将“启动TLS”设置更改为false,而改用端口465,但这也不起作用。
叮当猫咪
杨魅力
相关分类