Spring Boot - Java Mail - 无法连接到主机

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

我已经在我的 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

测试完成

  • 生成应用程序密码
  • 直接使用主机IP
  • 使用端口 465 和 25
  • 禁用 VPS 防火墙
  • 使用了其他邮件提供商

应用程序属性

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
java spring-boot maven email smtp
2个回答
1
投票

尝试将 spring.mail.port 更改为 465。这可能会有所帮助。

端口 587 在技术上是正确。然而,许多 ESP 已在端口 465 上采用了隐式 TLS。 此外,可能有 防火墙阻止您直接连接,您可能需要 通过代理连接


0
投票
在注意到我在

@Bean

 类中有 
mailSender
 对象的 
@Configuration
 定义之前,我也遇到了同样的问题:

@Bean public JavaMailSender mailSender() { return new JavaMailSenderImpl(); }
通过完全删除它来解决问题。我的配置是空的,不包含任何必要的 

SMTP 设置。即使我在 application.properties 中有属性,您仍然需要删除这个空 bean 配置,因为它会覆盖自动配置。

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