谷歌关闭低安全应用后Nodemailer使用Gmail报535错误如何解决
Gmail低安全应用权限下线后Nodemailer发信适配方案
谷歌2022年5月30日正式关闭低安全应用访问权限后,直接使用Gmail账号原密码通过Nodemailer发信会固定抛出535-5.7.8 Username and Password not accepted报错,目前官方文档暂未更新对应适配说明,以下是两种经过生产环境验证的可行方案,不需要更换邮件服务商。
方案1:个人账号使用应用专用密码(最简便)
这个方案不需要调整原有代码逻辑,只需要替换认证密码即可:
- 前置条件:给发信用的Gmail账号开启两步验证,未开启两步验证的账号无法生成应用专用密码
- 进入Gmail账号安全设置页,找到「应用专用密码」入口,选择应用类型为「其他」,自定义名称填
Nodemailer后点击生成 - 复制弹窗显示的16位密码,注意不要保留密码中间的显示空格,直接拼接为连续字符串
- 替换Nodemailer配置中auth字段的pass值即可,其余配置保持原有Gmail预设不变,配置参考:
const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: '你的完整Gmail地址@gmail.com', pass: '你复制的16位应用专用密码' } });
- 配置完成后直接调用sendMail接口测试即可,不需要额外调整端口、SMTP地址参数。
方案2:Google Workspace企业账号使用中继SMTP
如果是企业付费Workspace账号,需要更高发信限额、不想给单个账号开两步验证,可以用这个方案:
- 使用Workspace超级管理员进入后台,在Gmail路由设置中开启SMTP中继服务
- 给需要发信的账号配置中继权限,设置允许你服务的出口IP访问中继接口
- Nodemailer侧调整SMTP配置,将服务地址改为中继地址,认证信息填对应企业账号凭证即可,这个方案单账号单日发信限额最高可以到10万封,适合生产环境批量发信场景。
避坑提示:不要多次使用原账号密码重试发信,连续认证失败会触发谷歌安全风控,临时锁定账号SMTP权限24小时;不要使用声称可以绕过LSA限制的第三方脚本或工具,基本都是盗号程序,会导致Gmail账号被盗。
内容的提问来源于stack exchange,提问作者Nugget
相关产品推荐
相关产品推荐

