使用Nodemailer发Gmail报错535账号密码不被接受该如何解决?
报错根本原因
该535身份验证报错的核心原因是谷歌已经全面停用了普通账号的「低安全性应用访问」功能,哪怕手动开启过该权限,现在也无法通过账号主密码直接登录Gmail的SMTP服务。
解决方案
方案一(推荐,无需修改原有代码)
- 为你的发件谷歌账号开启两步验证,只有开启两步验证后,账号管理的安全性板块才会显示「应用专用密码」入口
- 进入「应用专用密码」页面,应用类型选择「其他(自定义名称)」,随意填写名称(比如nodemailer)后,会生成16位无空格的专用密码
- 将你.env文件中
PASSWORD对应的值替换为上面生成的16位专用密码,重新运行代码即可正常发送邮件
方案二(无需开启两步验证,配置更复杂)
如果你不想开启两步验证,可以改用OAuth2方式对接Gmail SMTP:在谷歌云控制台创建项目,开通Gmail API权限,获取对应的Client ID、Client Secret、Refresh Token、Access Token参数,修改Nodemailer的transporter配置中的auth字段为OAuth2对应参数即可。
前置检查
操作前可以在代码中打印process.env.EMAIL和process.env.PASSWORD,确认环境变量读取正常,没有拼写错误、多余空格、取值错误的低级问题。
内容的提问来源于stack exchange,提问作者Mrinal Anand
相关产品推荐
相关产品推荐

