You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot注册发验证邮件遇MailSendException:无法连接localhost:25

问题排查与解决方案

核心原因:配置未被Spring Boot正确加载

你的application.yml中邮件配置缺少spring前缀,且部分属性键名不符合Spring Boot邮件配置规范,导致JavaMailSender使用默认的localhost:25连接参数,而非你配置的Gmail SMTP信息。

1. 修正配置文件结构

将邮件配置调整为Spring Boot标准格式:

spring:
  mail:
    host: smtp.gmail.com
    port: 587
    username: smth@gmail.com
    password: 你的应用密码 # 注意:Gmail开启2FA后需用应用密码,而非原账号密码
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
  • 必须添加spring前缀,Spring Boot才能识别并加载这些配置到JavaMailSender
  • 原配置中的smtpAuth、starttlsEnabled需调整为嵌套在spring.mail.properties.mail.smtp下的标准键名

2. 验证配置类绑定正确性

确保MailConfigurationProperties使用了正确的前缀注解,否则无法读取配置值:

@ConfigurationProperties(prefix = "spring.mail")
public class MailConfigurationProperties {
    // 对应host、port、username、password等属性字段
}

同时在启动类上添加@EnableConfigurationProperties(MailConfigurationProperties.class)启用配置绑定。

3. Gmail SMTP额外要求

  • 应用密码:若Gmail账号开启了两步验证,必须使用应用密码替代原密码(可在Google账号设置的"应用密码"页面生成)
  • 低安全应用访问(可选):未开启两步验证的账号,需在Gmail设置中开启"不太安全的应用访问"(该选项已逐步被Google淘汰,优先推荐使用应用密码)

4. 确认配置生效

在EmailService中添加日志打印,验证JavaMailSender的实际配置:

// 在sendEmail方法开头添加
logger.info("当前邮件服务器: {}:{}", 
    mailSender.getJavaMailProperties().getProperty("mail.smtp.host"),
    mailSender.getJavaMailProperties().getProperty("mail.smtp.port"));

若打印结果为smtp.gmail.com:587,说明配置已正确加载。


内容的提问来源于stack exchange,提问作者gigi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:15:01