Replit中Nodemailer登录认证错误求助(已禁用2FA及低安全应用)
Nodemailer 发送Gmail认证失败问题排查
首先修正代码配置错误
你的代码里犯了一个关键错误:Nodemailer 连接Gmail时,账号密码需要放在auth对象中,而不是直接写在根配置里。正确代码如下:
const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: '你的邮箱地址', pass: '你的密码/应用专用密码' } }); const mailOptions = { from: 'SENDER-EMAIL', to: 'RECIPIENT-EMAIL', subject: 'SUBJECT', text: 'EMAIL BODY', }; transporter.sendMail(mailOptions,(err,res)=>{ if(err){ console.log(err); } else { console.log('The email was sent successfully'); } });
若修正后仍报错,排查以下原因
低安全应用访问未生效或已被Google淘汰
Google目前正在逐步淘汰「低安全应用访问」功能,即使你手动开启,部分账号也可能无法生效。建议重新开启双重认证(2FA),然后生成应用专用密码,用这个密码替代原账号密码填入代码,这是当前Gmail推荐的第三方应用授权方式。Replit服务器IP被Google拦截
Google会对陌生IP的登录请求进行拦截。登录你的Gmail账号,查看「最近安全活动」,如果有来自Replit的可疑登录记录,标记为「本人操作」后再重试发送邮件。账号安全限制未解除
部分账号可能开启了登录地域限制、登录验证码验证等额外安全设置,这些设置会覆盖低安全应用的权限,需要在Google账号安全中心调整对应设置。
内容的提问来源于stack exchange,提问作者Mason Walker
相关产品推荐
相关产品推荐

