使用Node.js通过Nodemailer发Gmail邮件时报535-5.7.8验证错误
问题原因
该535-5.7.8 Username and Password not accepted报错和你输入的账号密码正确性无关,是Gmail官方安全策略限制导致:目前Gmail默认禁止第三方应用使用账号登录密码直接访问服务,就算密码输入完全正确也会被拦截。
对应错误信息
code: 'EAUTH', response: '535-5.7.8 Username and Password not accepted.
解决方案
按以下步骤操作即可修复:
- 先为你的谷歌账号开启两步验证,操作入口在谷歌账号「安全性」设置板块
- 开启后在安全性设置中找到「应用专用密码」功能,生成自定义应用对应的16位专用密码
- 替换代码中
auth.pass字段的原有登录密码为刚生成的16位专用密码,密码自带的空格可以直接删除 - 修正代码中
mailOptions.to的错误配置,当前值缺少收件人账号前缀,需填写完整的收件人邮箱,比如test@gmail.com
修正后参考代码
var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'piyush212@gmail.com', pass: '这里替换为生成的16位应用专用密码' } }); var mailOptions = { from: 'piyush212@gmail.com', to: '完整的收件人邮箱@gmail.com', subject: 'Sending Email using Node.js', text: ' hello world' }; transporter.sendMail(mailOptions, function(error, info){ if (error) { console.log(error); } else { console.log('Email sent: ' + info.response); } });
内容的提问来源于stack exchange,提问作者Piyush Jangid
相关产品推荐
相关产品推荐

