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

使用JavaMail API发送邮件遇SocketTimeoutException问题求助

JavaMail发送Gmail遇SocketTimeoutException排查解决

1. 代码冗余与注释错误

  • 重复设置了mail.smtp.auth,删掉其中一行即可,属于冗余代码不影响功能但建议清理。
  • 超时时间注释有误:50000对应的是50秒,不是注释里标注的5秒,若需5秒超时请改为5000。

2. Gmail账号认证必做配置

Gmail对第三方客户端登录有严格限制,必须满足以下条件之一:

  • 账号开启两步验证:使用应用专用密码(App Password)替代原密码登录,原密码无法用于SMTP验证。
  • 未开启两步验证:在Google账号设置中开启“不太安全的应用访问”(注:Google已逐步淘汰该选项,优先推荐两步验证+应用密码方案)。

3. 补充JavaMail关键配置

添加以下配置项优化SMTP连接稳定性:

// 信任Gmail SMTP服务器证书,避免SSL验证问题
properties.put("mail.smtp.ssl.trust", "smtp.gmail.com");
// 强制要求STARTTLS加密
properties.put("mail.smtp.starttls.required", "true");
// 增加写入超时配置,覆盖默认值
properties.put("mail.smtp.writetimeout", "50000");

4. 修正Transport连接逻辑

当前transport.connect()未传参,建议显式指定连接参数,确保逻辑清晰:

transport.connect("smtp.gmail.com", 587, username, password);

5. 网络环境排查

  • 用telnet smtp.gmail.com 587测试端口连通性,若无法连接,说明防火墙、代理拦截了587端口的出站请求,需联系网络管理员调整。
  • 国内环境需通过合规网络访问Gmail服务。

6. 依赖简化(可选)

你引入的commons-email是JavaMail的封装层,若直接使用JavaMail API,可暂时移除该依赖,排除兼容性干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 15:26:18