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

Nodemailer使用SMTP发信出现ETIMEDOUT连接超时错误如何解决?

Nodemailer SMTP超时错误排查解决方法

核心问题说明

你遇到的ETIMEDOUT报错是Node服务无法和目标SMTP服务器的25端口建立TCP连接导致的,按以下优先级排查即可:

  • 第一步:优先排查25端口封禁问题
    绝大多数云服务商、家庭宽带ISP都会默认封禁25端口的出站请求,用于防控垃圾邮件。你可以先在部署代码的服务器上执行命令测试连通性:
    telnet mail.tusharjoshi.tech 25
    如果执行后长时间无响应、连接失败,就说明25端口不通,建议更换SMTP端口:
    绝大多数邮箱服务商都支持587(STARTTLS协议)、465(SSL加密协议)两个邮件提交端口,修改对应配置即可:

    1. 使用587端口配置示例:
    let transporter = nodemailer.createTransport({
      host: "mail.tusharjoshi.tech",
      port: 587,
      secure: false, // 587端口对应值为false,会自动开启STARTTLS加密
      auth: {
        user: "contact@tusharjoshi.tech",
        pass: "mypAssword"
      },
      tls: {
        rejectUnauthorized: false
      }
    });
    
    1. 使用465端口配置示例:
    let transporter = nodemailer.createTransport({
      host: "mail.tusharjoshi.tech",
      port: 465,
      secure: true, // 465端口为SSL加密,对应值为true
      auth: {
        user: "contact@tusharjoshi.tech",
        pass: "mypAssword"
      },
      tls: {
        rejectUnauthorized: false
      }
    });
    
  • 第二步:修正发件人格式错误
    你当前配置的from字段值为tusharjoshi.tech,不符合SMTP协议要求的发件人格式,需要改为包含完整邮箱的格式,示例:

const mailOptions = {
  from: "Tushar Joshi <contact@tusharjoshi.tech>", // 正确格式
  to: "hellotusharr2318@gmail.com",
  subject: `message from ${req.body.name}`,
  text: `Message recieved from ${req.body.email}: and message is about: ${req.body.message}`
};
  • 第三步:检查邮箱服务及权限配置

    • 确认你的邮箱contact@tusharjoshi.tech已经开启了SMTP服务
    • 部分邮箱服务商要求使用单独的SMTP授权码登录,而非邮箱登录密码,确认你填写的密码符合要求
    • 确认邮箱服务没有IP访问限制,你部署代码的服务器IP没有被邮箱服务拉黑
  • 第四步:检查服务器出站规则
    确认你部署代码的云服务器安全组、防火墙的出站规则,已经放开了对应SMTP端口(25/465/587)的访问权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:27:04