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

NodeJS中Nodemailer报Error: connect ECONNREFUSED 127.0.0.1:587求助

问题:Nodemailer连接SMTP时出现ECONNREFUSED错误

我尝试在用户注册后通过Nodemailer发送邮件,已在谷歌设置中开启IMAP,创建了应用专用密码,且通过SMTP测试工具验证配置可用,但自己的Node.js服务连接时出现如下报错:

Error: connect ECONNREFUSED 127.0.0.1:587
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) {
errno: -111,
code: 'ESOCKET',
syscall: 'connect',
address: '127.0.0.1',
port: 587,
command: 'CONN'
}

我的mail-service代码如下:

import nodemailer from "nodemailer";
class MailService {
  constructor() {
    this.transporter = nodemailer.createTransport({
      host: process.env.SMTP_HOST,
      port: process.env.SMTP_PORT,
      secure: false,
      auth: {
        user: process.env.SMTP_USER,
        pass: process.env.SMTP_PASSWORD,
      },
    });
  }
  async sendActicvationMail(to, link) {
    await this.transporter.sendMail({
      from: process.env.SMTP_USER,
      to,
      subject: "Mail activation " + process.env.API_URl,
      text: "",
      html: `
            <div>
              <h1>For activation click on link</h1>
              <a href="${link}">Click here !</a>
            </div>
          `,
    });
  }
}
export default new MailService();

请问我可能哪里出错了?谢谢!


问题排查与解决方法

  • 环境变量未正确加载:报错显示连接本地地址127.0.0.1:587,说明process.env.SMTP_HOST和process.env.SMTP_PORT未读取到谷歌SMTP的正确配置(谷歌SMTP主机应为smtp.gmail.com,端口587)。检查:

    • .env文件是否存在于项目根目录
    • 是否在代码顶部引入dotenv并调用dotenv.config()(如果使用该包加载环境变量)
    • 启动服务时是否通过命令行正确传入环境变量
  • 环境变量配置错误:确认.env文件中:

    • SMTP_HOST=smtp.gmail.com
    • SMTP_PORT=587
      若变量名拼写错误(比如SMTP_HOS)或值为空,会导致Nodemailer使用默认逻辑连接本地地址。
  • 补充谷歌SMTP专属配置:针对谷歌SMTP,建议在 transporter 配置中添加requireTLS: true,确保连接启用TLS加密:

this.transporter = nodemailer.createTransport({
  host: process.env.SMTP_HOST,
  port: process.env.SMTP_PORT,
  secure: false,
  requireTLS: true, // 新增该行
  auth: {
    user: process.env.SMTP_USER,
    pass: process.env.SMTP_PASSWORD,
  },
});
  • 代码拼写问题(非当前报错原因,但建议修正):方法名sendActicvationMail存在拼写错误(多了一个字母c),后续调用时可能引发未定义方法错误,建议修正为sendActivationMail。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:33:24