Nodemailer v6.9.3无法发送邮件:ECONNREFUSED 127.0.0.1:465错误
问题根源与解决方案
错误原因
你当前代码将SMTP主机设为localhost,但本地并未运行监听465端口的SMTP服务,导致连接被拒绝(ECONNREFUSED)。要通过Gmail发送邮件,必须使用Gmail官方提供的SMTP服务器,而非本地主机。
修正步骤
1. 调整SMTP配置
将createTransport的配置项替换为Gmail的SMTP参数:
const nodeMailer = require('nodemailer') const html = ` <h1>Hello World</h1> <p>Worked!</p> `; async function main() { // 修正后的Gmail SMTP配置 const transporter = nodeMailer.createTransport({ host: 'smtp.gmail.com', // 替换为Gmail官方SMTP服务器地址 port: 465, secure: true, auth: { user: 'lohproh38@gmail.com', pass: '你的应用专用密码或调整后的账号密码' // 注意此处密码要求 } }) const info = await transporter.sendMail({ from: 'lohproh38@gmail.com', to: 'holaves228@gmail.com', subject: 'Testing, testing, 123', html: html, }) console.log("Message sent: " + info.messageId) } main() .catch(e => console.log(e))
2. 解决Gmail认证权限问题
Gmail对第三方客户端登录有严格限制,需根据账号状态调整:
- 若账号开启了两步验证:必须在Google账号设置中创建应用专用密码,用该密码替代代码中的原账号密码。
- 若未开启两步验证:需在Google账号“安全性”设置中开启“允许不太安全的应用”(不推荐此方式,建议开启两步验证并使用专用密码)。
3. 额外注意事项
- Gmail有每日发送量限制,测试时避免批量发送大量邮件。
- 若仍出现认证错误,可检查账号是否触发了Google安全拦截,需在账号安全通知中允许该登录请求。
内容的提问来源于stack exchange,提问作者Holaves
相关产品推荐
相关产品推荐

