You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeMailer连接Gmail/Outlook时凭证正确仍遇EAUTH认证问题

解决NodeMailer连接Gmail/Outlook的EAUTH认证问题

针对Gmail的可行方案(无需启用2FA)

  • 要求邮箱账户所有者开启不太安全的应用访问:尽管Google已逐步淘汰该功能,但部分旧账户仍可在Google账户安全设置中找到并启用。启用后,直接使用账户的普通密码而非应用密码进行认证。
  • 注意:若账户已被Google强制禁用该选项,此方法无效,需转向替代方案。

针对Outlook的可行方案

  • 确认邮箱账户已开启SMTP服务:在Outlook设置的「POP和IMAP」选项中,确保SMTP服务处于启用状态。
  • 使用账户普通密码:Outlook无需应用密码(除非开启了2FA),直接使用邮箱登录密码即可。若仍报错,可尝试在NodeMailer配置中添加authMethod: 'PLAIN'参数。

兼容NodeMailer的替代邮件服务

如果上述方法不可行,推荐使用专业邮件服务,无需依赖个人邮箱凭证,稳定性更强:

1. SendGrid

使用API Key认证,示例配置:

const transporter = nodemailer.createTransport({
  host: 'smtp.sendgrid.net',
  port: 587,
  secure: false,
  auth: {
    user: 'apikey',
    pass: process.env.SENDGRID_API_KEY
  }
});

2. Mailgun

基于域名的SMTP服务,示例配置:

const transporter = nodemailer.createTransport({
  host: 'smtp.mailgun.org',
  port: 587,
  secure: false,
  auth: {
    user: process.env.MAILGUN_USER,
    pass: process.env.MAILGUN_PASSWORD
  }
});

3. Postmark

专注事务性邮件,示例配置:

const transporter = nodemailer.createTransport({
  host: 'smtp.postmarkapp.com',
  port: 587,
  secure: false,
  auth: {
    user: process.env.POSTMARK_API_KEY,
    pass: process.env.POSTMARK_API_KEY
  }
});

你的代码调整建议

若尝试Gmail的「不太安全的应用访问」方案,需将auth.pass替换为邮箱的普通密码:

const transporter = nodemailer.createTransport({
  service: "gmail",
  host: "smtp.gmail.com",
  port: 587,
  secure: false,
  auth: {
    user: process.env.USER,
    pass: process.env.EMAIL_PASSWORD, // 替换为邮箱普通密码
  },
});

内容的提问来源于stack exchange,提问作者MANVEER SINGH BEDI 21BCE11573

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 06:02:58