Spring Boot集成Gmail发邮件连smtp.gmail.com:25超时如何解决
问题根因
异常日志明确显示程序连接smtp.gmail.com:25超时,核心原因有三点:
- Gmail官方早已下线25端口的非加密SMTP服务,目前仅支持465(SSL加密)、587(TLS加密)两个对外服务端口
- 家庭宽带运营商、云服务厂商默认封禁25出站端口,用于防范垃圾邮件滥发
- 独立项目测试时邮件配置正确可正常运行,集成到主项目后邮件配置缺失、或被自定义Bean配置覆盖,导致JavaMailSender走了默认的25端口配置,最终连接超时。
修复步骤
- 补全正确的邮件配置
打开项目的配置文件(application.properties/application.yml),替换为Gmail官方推荐的加密连接参数,禁止使用25端口:
properties 配置示例:
yml 配置示例:spring.mail.host=smtp.gmail.com spring.mail.port=465 spring.mail.username=你的Gmail邮箱账号 # 注意:此处需填写Gmail两步验证生成的16位应用专用密码,不能使用邮箱登录密码 spring.mail.password=你的应用专用密码 spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.ssl.enable=true spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory spring.mail.properties.mail.smtp.socketFactory.port=465spring: mail: host: smtp.gmail.com port: 465 username: 你的Gmail邮箱账号 password: 你的应用专用密码 properties: mail: smtp: auth: true ssl: enable: true socketFactory: class: javax.net.ssl.SSLSocketFactory port: 465 - 排查配置冲突
扫描项目中是否存在手动注册JavaMailSenderBean的配置类,若存在自定义配置,核对端口、加密参数是否和上述配置一致,无特殊需求可直接删除自定义邮件配置,统一使用配置文件参数即可,避免配置覆盖。 - 网络连通性校验
在项目运行环境执行telnet smtp.gmail.com 465命令,若端口可正常连通说明网络层无拦截;若连接失败,检查本地防火墙、服务器安全组出站规则,放行465端口访问权限。 - 账号权限配置
Gmail已关闭低安全性应用访问入口,必须先开启对应账号的两步验证,再生成应用专用密码用于SMTP认证,直接使用账号登录密码会触发认证失败。
验证方式
重启Spring Boot项目后调用注册接口,日志正常打印Simple Email sent、目标邮箱成功收到注册邮件即为修复完成。
内容的提问来源于stack exchange,提问作者Nitin Kumar
相关产品推荐
相关产品推荐

