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

nodemailer发送邮件时出现ETIMEDOUT连接超时错误该如何解决

问题产生原因

  • 代码冗余逻辑触发无效请求:你已经在transport配置里填写了真实的Gmail SMTP认证信息,不需要用到nodemailer的测试账号能力,但仍保留了示例代码中的nodemailer.createTestAccount()调用,这个方法会主动请求nodemailer官方的测试账号接口https://api.nodemailer.com/user。当前这个接口请求超时,直接导致整个异步函数抛出错误终止,还没走到实际发邮件的逻辑。
  • 网络策略变化:要么是你的部署服务器近期调整了出口访问规则,无法连通nodemailer的官方接口;要么是nodemailer官方的公共测试账号服务调整了访问策略,对部分地区或IP进行了限流、关停处理。

解决方案

  1. 优先删除冗余测试逻辑:直接移除let testAccount = await nodemailer.createTestAccount();这行代码,同时可以删掉后续打印预览URL的相关代码(这部分代码仅针对测试账号生效,你用自有SMTP账号发信不会生成对应预览链接),即可解决当前的超时报错问题。
  2. 优化Gmail发信配置:目前Google已经不再支持普通账号密码的SMTP登录,如果你当前使用的myauthpassword是账号的普通登录密码,后续也可能出现发信失败问题,建议先开启Google账号的两步验证,生成专用的应用密码替换当前的认证密码;如果你的服务部署在国内,也可以切换为腾讯企业邮、阿里云邮等国内邮件服务,降低网络连通性风险。
  3. 补充代码逻辑校验:你当前的session判断逻辑存在缺陷,res.redirect('/login')执行后没有加return终止后续代码,未登录的用户请求也会触发后面的发信逻辑,建议调整为:
if (!req.session.loggedin) {
  res.redirect('/login')
  return req.session.destroy()
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:27:04