我已经在我的 Java 应用程序中使用 JavaMailSender 实现了电子邮件管理器,配置了 Gmail 电子邮件,并进行了本地测试。
我正在使用 freenom 的免费域名。
在我电脑上的本地主机中,一切正常。但是在服务器上部署应用程序会出现此错误:
c.m.a.m.components.EmailManager : sendRegisterEmail Exception: Mail server connection failed;
nested exception is com.sun.mail.util.MailConnectException:
Couldn't connect to host, port: smtp.gmail.com, 587; timeout -1;
nested exception is:
java.net.UnknownHostException: smtp.gmail.com. Failed messages:
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.gmail.com, 587; timeout -1;
nested exception is:
java.net.UnknownHostException: smtp.gmail.com
测试完成
应用程序属性
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=***********@gmail.com
spring.mail.password=***********
spring.mail.properties.mail.debug=false
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.mime.charset=UTF-8
spring.mail.transport.protocol=smtp
@Bean
类中有
mailSender
对象的
@Configuration
定义之前,我也遇到了同样的问题:
@Bean
public JavaMailSender mailSender() {
return new JavaMailSenderImpl();
}
通过完全删除它来解决问题。我的配置是空的,不包含任何必要的 SMTP 设置。即使我在 application.properties 中有属性,您仍然需要删除这个空 bean 配置,因为它会覆盖自动配置。