Node.js用Nodemailer发Gmail邮件出现connect ETIMEDOUT 74.125.206.108:465错误如何解决
故障原因
这个报错是Node.js进程无法和Gmail SMTP服务器的465端口建立TCP连接导致的超时,可按以下顺序排查解决:
解决方案
- 排查网络连通性
首先确认当前运行环境的网络可以正常访问Gmail服务,可在终端执行telnet smtp.gmail.com 465测试连通性,如果返回连接超时,说明是网络层面限制无法访问Gmail服务。如果使用代理访问外网,需要给Node.js进程配置代理,也可以直接在nodemailer配置中增加代理参数:proxy: 'http://代理地址:端口' - 修正Gmail账户权限配置
目前Gmail已经不再支持直接用账户普通登录密码调用SMTP服务,必须做以下配置:- 先给对应Google账户开启两步验证
- 在Google账户安全设置中创建应用专用密码,将配置中
pass字段的值替换为生成的16位应用专用密码
- 明确SMTP配置
可以手动指定SMTP服务器参数代替service: 'gmail'的简写,避免自动解析异常:var transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 465, secure: true, // 465端口对应开启SSL auth: { user: 'ahmad.s.almasri@gmail.com', pass: '你生成的应用专用密码' } }); - 检查端口访问限制
确认运行环境的本地防火墙、云服务器安全组的出站规则没有禁止访问465端口。如果465端口持续被限制,可以尝试切换为587端口,修改对应配置:port: 587、secure: false。
内容的提问来源于stack exchange,提问作者ahmad almasri
相关产品推荐
相关产品推荐

