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

Spring Boot使用Gmail SMTP发邮件报SocketTimeoutException读取超时求助

问题定位与解决方案

1 基础网络连通性排查

SocketTimeoutException: Read timed out 本质是客户端无法和Gmail SMTP服务器完成正常通信,首先做基础连通性验证:

  • 本地执行命令测试端口连通性:telnet smtp.gmail.com 587,如果连接失败,说明当前网络环境无法访问Google服务,国内环境大概率属于此类情况,可配置网络代理,或更换为国内邮件服务商(QQ邮箱、163邮箱等)。
  • 如果telnet可正常连通,再往下排查配置和代码问题。

2 配置项优化

现有application.properties缺少必要配置项,参考以下配置修正:

server.port=80
server.error.include-message=always
spring.mail.username=username@gmail.com
# 后续需替换为Gmail应用专用密码
spring.mail.password=password
spring.mail.default-encoding=UTF-8
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.protocol=smtp
# 开启动时连接测试,方便快速定位问题
spring.mail.test-connection=true

spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
# 必须配置发件人,和username保持一致,否则Gmail会直接拒绝请求
spring.mail.properties.mail.smtp.from=username@gmail.com
# 延长超时时间,避免默认超时阈值过短导致报错
spring.mail.properties.mail.smtp.connectiontimeout=15000
spring.mail.properties.mail.smtp.timeout=15000
spring.mail.properties.mail.smtp.writetimeout=15000
# 如需走代理访问,放开下方配置替换为自己的代理地址端口
# spring.mail.properties.mail.smtp.proxy.host=127.0.0.1
# spring.mail.properties.mail.smtp.proxy.port=1080

3 Gmail权限配置修正

目前Google已经全面下线「低安全性应用访问」功能,即使之前开启过也已经失效,需改用应用专用密码:

  • 先为你的Google账号开启两步验证
  • 进入账号安全页创建应用专用密码,将spring.mail.password的值替换为生成的16位应用专用密码即可。

4 代码补全

现有业务代码未配置发件人,需补充对应配置,修正后代码如下:

@Service
public class EmailService {
    @Autowired
    JavaMailSender sender;
    public ApiResponse sendText(String email) {
        try {
            SimpleMailMessage mailMessage = new SimpleMailMessage();
            // 补充发件人配置,和配置文件中的邮箱保持一致
            mailMessage.setFrom("username@gmail.com");
            mailMessage.setText("This message from Spring Boot Application");
            mailMessage.setSubject("Spring Boot Mail Message");
            mailMessage.setTo(email);
            sender.send(mailMessage);
            return new ApiResponse("Sent", true);
        } catch (MailException e) {
            e.printStackTrace();
            return new ApiResponse("Error", false);
        }
    }
}

根因总结

绝大多数此类报错的核心原因是网络限制无法访问Gmail SMTP服务器,其次是权限配置错误、缺少发件人配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:00:01