使用PhpMailer发送含MP3邮件时遇SMTP错误:No route to host (65)求助
先别急着怀疑Gmail兼容性,这个SMTP ERROR: Failed to connect to server: No route to host (65)错误其实更偏向网络路由层面的问题,和服务端兼容关系不大。结合你之前功能正常的情况,大概率是服务器环境的网络规则或配置发生了变化,给你几个具体的排查步骤:
核对SMTP服务器地址与端口的准确性
虽然你已经切换过TLS/SSL,但再仔细确认一遍:Gmail的TLS端口是smtp.gmail.com:587,SSL端口是smtp.gmail.com:465,别把域名打错(比如少打了个smtp.),也别混用端口和加密方式。检查服务器防火墙/安全组的出站规则
这是最常见的原因!之前功能正常,很可能是服务器的防火墙、安全组或者机房的网关突然封禁了出站的587/465端口。你可以在服务器上用命令测试连通性:- 测试TLS端口:
telnet smtp.gmail.com 587 - 测试SSL端口:
nc -zv smtp.gmail.com 465
如果命令返回无法连接,那肯定是端口被封了,需要找服务器管理员或者云服务商开放对应的出站端口权限。
- 测试TLS端口:
排查DNS解析是否正常
服务器无法解析SMTP服务器的域名也会导致路由失败。在服务器上执行nslookup smtp.gmail.com或者ping smtp.gmail.com,看看能不能得到正确的IP地址。如果解析结果异常,建议更换服务器的DNS服务器(比如换成Google的8.8.8.8或者Cloudflare的1.1.1.1)后再重试。验证Gmail账户的SMTP权限设置
如果你用的是Gmail的SMTP服务,还要注意:- 如果你开启了两步验证(2FA),必须使用**应用专用密码(App Password)**代替普通密码登录SMTP
- 检查Gmail账户的安全日志,看看有没有Google拦截的登录尝试——如果你的服务器IP被Google标记为可疑,也会触发连接限制,这种情况需要在Google账户里手动解除限制
暂时排除附件的影响
虽然这个错误是连接问题,但可以先尝试发送一封不带MP3附件的纯文本邮件,如果能正常发送,再逐步添加附件测试,排除附件大小或格式导致的间接问题(不过概率很低,但可以作为辅助排查步骤)
内容的提问来源于stack exchange,提问作者munson

