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

Java Spring发送邮件遇SocketTimeoutException:如何排查防火墙/杀毒软件问题?

排查防火墙/杀毒软件导致邮件发送SocketTimeoutException的步骤

1. 绕开应用直接测试邮件服务器连通性

先排除Spring应用代码的干扰,用基础工具验证网络层面能否连接目标邮件服务器:

  • 用telnet命令(Windows需先启用Telnet客户端):telnet smtp.example.com 587(替换为你的SMTP服务器地址和端口,比如QQ邮箱是smtp.qq.com 587)
  • 或用nc(netcat):nc -zv smtp.example.com 587
    如果这两个命令都超时,说明网络层面无法抵达目标端口,大概率是防火墙/杀毒软件拦截;如果能正常连通,问题则出在Spring应用配置或代码中,与防火墙无关。

2. 临时关闭防火墙与杀毒软件做对比测试

  • Windows:打开「Windows Defender防火墙」,临时关闭防火墙功能;同时关闭第三方杀毒软件的实时防护和防火墙模块。
  • macOS:进入「系统设置-网络-防火墙」,点击关闭防火墙;暂停第三方杀毒软件的防护。
  • Linux:用命令临时停掉防火墙,比如sudo ufw disable(Ubuntu)或sudo systemctl stop firewalld(CentOS)。
    关闭后重新运行Spring应用发送邮件,若能成功发送,即可确认是防火墙/杀毒软件导致的问题;若仍超时,则基本排除该因素,需转向排查邮件服务器配置、运营商端口限制或Spring代码问题。

3. 查看防火墙/杀毒软件的拦截日志

多数安全工具会记录拦截的网络请求:

  • Windows Defender:进入「Windows安全中心-防火墙和网络保护-高级设置-监视-防火墙日志」,查找是否有拦截你的应用或目标SMTP端口的记录。
  • 第三方杀毒软件:在软件的「日志」「防护记录」板块,搜索是否存在拦截出站连接到SMTP端口(如587、465)的条目。
    若日志中有明确的拦截记录,可直接确认是安全工具的问题。

4. 给Spring应用添加安全工具白名单

如果临时关闭安全工具后能正常发件,就将你的Spring应用(或Java进程)加入白名单:

  • Windows防火墙:在「高级设置-出站规则」中新建规则,允许你的Java进程(或jar包路径)访问远程SMTP端口。
  • 第三方杀毒软件:在「信任区」「白名单」中添加应用程序的安装路径或运行文件。

5. 排除运营商网络限制

换手机热点仍无法解决的话,可能是运营商(含手机运营商)封禁了SMTP端口。可以用步骤1的工具测试多个不同邮件服务商的SMTP端口,比如同时测试QQ、163邮箱的端口,若全部超时,大概率是运营商限制;若某一个能连通,则是对应邮件服务器的配置或你的应用设置问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:55:06