使用替代邮箱登录时Nodemailer不接受Gmail用户名和密码
问题描述
已使用应用密码(app password)登录Gmail账号,但当用非Gmail的替代邮箱(无论是创建谷歌账号时使用的现有非Gmail邮箱,还是后续添加的替代邮箱)在Nodemailer中尝试登录时,出现以下认证错误:
Error: { code: 'EAUTH', response: '535-5.7.8 Username and Password not accepted. Learn more at\n' + '535 5.7.8 <a href="https://support.google.com/mail/?p=BadCredentials" rel="nofollow noreferrer">https://support.google.com/mail/?p=BadCredentials</a> e14-20020adfef0e000000b0030c2e3c7fb3sm10043909wro.101 - gsmtp', responseCode: 535, command: 'AUTH PLAIN' }
注:该替代邮箱可正常登录accounts.google.com,但无法在Nodemailer中完成SMTP认证。
解决方法
核心原因
谷歌SMTP服务仅接受Gmail主邮箱地址作为SMTP认证的用户名,即使替代邮箱能登录网页端账号,也无法用于SMTP层面的身份验证。
具体操作
- 替换SMTP认证用户名为Gmail主邮箱
在Nodemailer的配置中,将auth.user字段改为你的Gmail主邮箱(格式为xxx@gmail.com),应用密码保持不变。示例配置:const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: '你的主gmail账号@gmail.com', // 此处必须填Gmail主邮箱 pass: '你的应用密码' } }); - 设置发件人显示为替代邮箱
若需要收件人看到的发件人邮箱是替代邮箱,无需修改SMTP认证信息,只需在邮件选项的from字段指定替代邮箱即可:const mailOptions = { from: '"你的名称" <你的替代邮箱@xxx.com>', // 这里设置替代邮箱作为显示发件人 to: '收件人邮箱@xxx.com', subject: '测试邮件', text: '这是用Nodemailer发送的测试邮件' }; - 确认替代邮箱已验证
确保你的替代邮箱已在谷歌账号设置中完成验证步骤,否则无法作为发件人显示。
内容的提问来源于stack exchange,提问作者AliBot
相关产品推荐
相关产品推荐

