如何结合Google使用Nodemailer?解决无效登录报错问题
解决Nodemailer+Google邮箱「Invalid Login」报错的替代方案
方案1:使用Google应用专用密码(App Password)
这是Google针对开启2步验证账号提供的替代授权方案:
- 先确保你的Google账号已开启两步验证
- 登录Google账号安全设置,找到「应用专用密码」选项(仅开启2步验证后可见)
- 生成一个命名为Nodemailer的应用专用密码
- 在Nodemailer配置中,将原账号密码替换为这个生成的专用密码
示例配置代码:
const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your-email@gmail.com', pass: '生成的应用专用密码' } });
方案2:使用OAuth2认证
这是Google推荐的更安全的第三方应用授权方式,操作步骤如下:
- 登录Google Cloud控制台,创建新项目
- 搜索并启用「Gmail API」
- 进入「API和服务」→「凭据」,创建「OAuth客户端ID」,应用类型选择「桌面应用」
- 获取客户端ID、客户端密钥,通过授权流程获取刷新令牌(可借助Nodemailer官方
get-legacy-token工具快速生成) - 配置Nodemailer的OAuth2认证信息
示例配置代码:
const transporter = nodemailer.createTransport({ service: 'gmail', auth: { type: 'OAuth2', user: 'your-email@gmail.com', clientId: '你的客户端ID', clientSecret: '你的客户端密钥', refreshToken: '你的刷新令牌' } });
方案3:更换其他邮件服务商
若不想折腾Google的认证机制,可切换至Outlook、SendGrid、Mailgun等服务商,以SendGrid为例:
- 注册SendGrid账号并生成API密钥
- 配置Nodemailer使用SendGrid的SMTP服务
示例配置代码:
const transporter = nodemailer.createTransport({ host: 'smtp.sendgrid.net', port: 587, secure: false, auth: { user: 'apikey', pass: '你的SendGrid API密钥' } });
内容的提问来源于stack exchange,提问作者user15018969
相关产品推荐
相关产品推荐

