Nodemailer连接异常求助:ECONNREFUSED 127.0.0.1:587
解决Nodemailer连接Gmail时的ECONNREFUSED错误
你的错误日志显示连接的是本地地址127.0.0.1:587,而非Gmail的远程SMTP服务器,这说明Transporter配置存在问题,导致Nodemailer没有正确指向Gmail服务。下面是具体的解决步骤:
1. 修正Transporter核心配置
你当前的service字段填写的是'smtp.gmail.com',但Nodemailer的预设服务名称应该是'gmail'——这个预设值会自动帮你填充正确的SMTP主机、端口和安全规则。
方式一:使用Gmail预设服务(推荐)
const transporter = nodemailer.createTransport({ service: 'gmail', // 改为'gmail',而非完整SMTP地址 auth: { user: 'your-real-email@gmail.com', pass: 'your-email-password' // 注意:你原配置里pass值末尾有个空格,记得删除! } });
方式二:手动指定SMTP参数(更灵活)
如果不想依赖预设服务,可以手动配置所有参数,确保指向Gmail的服务器:
const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // 587端口用TLS协议,secure=true对应465端口的SSL协议 auth: { user: 'your-real-email@gmail.com', pass: 'your-email-password' } });
2. 检查Gmail安全设置细节
虽然你开启了"低安全应用访问",但Google的安全规则有特殊情况:
- 如果你开启了两步验证(2FA),低安全应用访问会直接失效,必须使用应用专用密码(App Password)替代原密码。你可以在Google账号的安全设置中生成这个专用密码。
- 如果未开启2FA,确认低安全应用访问确实处于开启状态,设置可能需要几分钟才会生效。
3. 排查本地网络干扰
若配置修正后仍报错,检查以下本地因素:
- 本地防火墙或杀毒软件是否拦截了587端口的出站连接。
- 是否有代理服务器设置影响了网络请求,导致无法连接Gmail的SMTP服务器。
内容的提问来源于stack exchange,提问作者Andrey Radkevich
相关产品推荐
相关产品推荐

