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

使用Nodemailer通过Gmail发送邮件遇ETIMEDOUT错误求助

解决Nodemailer连接Gmail SMTP超时(ETIMEDOUT)问题

你遇到的Error: connect ETIMEDOUT错误本质是无法建立到Gmail SMTP服务器的网络连接,以下是具体排查和解决步骤:

1. 排查网络与防火墙限制

  • 先测试本地网络能否访问Gmail的SMTP端口:在终端执行 telnet smtp.gmail.com 587 或 curl -v smtp://smtp.gmail.com:587,如果无法连接,说明网络层面被拦截
  • 切换到个人热点或其他非受限网络(比如公司/校园网络可能封禁587端口)
  • 临时关闭本地防火墙、杀毒软件的网络防护,确认是否是它们阻止了连接

2. 验证Gmail账号配置

  • 确保你的Gmail账号已开启两步验证,并且使用的是应用专用密码(不是邮箱登录密码),普通密码无法用于SMTP认证
  • 确认mailOptions里的from字段和auth.user完全一致,Gmail强制发件人必须是认证的账号

3. 调整Nodemailer配置参数

尝试使用SSL端口465

587是TLS起始端口,部分网络环境下465的SSL连接更稳定,修改配置如下:

var nodemailer = require("nodemailer");
var transporter = nodemailer.createTransport({
  auth: {
    user: "你的邮箱地址",
    pass: "应用专用密码",
  },
  host: "smtp.gmail.com",
  port: 465,
  secure: true, // 启用SSL加密
});

var mailOptions = {
  from: "你的邮箱地址",
  to: "收件人邮箱",
  subject: "Sending Email using Node.js",
  text: "That was easy!",
};

transporter.sendMail(mailOptions, function (error, info) {
  if (error) {
    console.log(error);
  } else {
    console.log("Email sent: " + info.response);
  }
});

延长超时时间

给连接添加超时参数,避免因网络延迟导致的超时:

var transporter = nodemailer.createTransport({
  auth: {
    user: "你的邮箱地址",
    pass: "应用专用密码",
  },
  host: "smtp.gmail.com",
  port: 587,
  secure: false,
  requireTLS: true,
  connectionTimeout: 10000, // 10秒连接超时
  greetingTimeout: 10000
});

4. 排查DNS解析问题

如果DNS解析异常,可直接指定Gmail SMTP服务器的IP(比如错误信息里的74.125.140.108),替换host字段:

host: "74.125.140.108"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:10:41