如何使用 gmail api 使用 nodemailer smtp oauth2?收到错误 535:不接受用户和通行证

Posted

技术标签:

【中文标题】如何使用 gmail api 使用 nodemailer smtp oauth2?收到错误 535:不接受用户和通行证【英文标题】:How to work nodemailer smtp oauth2 with gmail api? Got error 535: user and pass not accepted 【发布时间】:2018-09-28 05:07:01 【问题描述】:

我在 google API 控制台仪表板上启用了 Gmail API。 我创建了选择 OAuth 客户端 ID、Web 应用程序和“https://developers.google.com/oauthplayground”作为授权重定向 uri 的凭据。 我通过使用上面的凭据在 OAuth 2.0 操场上玩游戏并为范围启用 https://mail.google.com/ 获得了刷新令牌。

const mailer = require('feathers-mailer');
const smtpTransport = require('nodemailer-smtp-transport');

app.use('/api/mailer', mailer(smtpTransport(
    service: 'gmail',
    host: 'smtp.gmail.com',
    port: 587,
    secure: false,
    requireTLS: true,
    auth: 
      type: 'OAuth2',
      user: app.get('gmail'),
      scope: 'https://mail.google.com/',
      clientId: app.get('gmail_secret').client_id,
      clientSecret: app.get('gmail_secret').client_secret,
      refreshToken: app.get('gmail_credentials').refresh_token
    
  )));

我收到错误 535:不接受用户名和密码,包括“command:auth plain”以防万一。

我确信这些应用程序得到了正确的值,因为 我已经用确切的值替换了应用程序,但它仍然给出了同样的错误。 我还尝试了删除“主机”、“端口”、“安全”、“requireTLS”的身份验证对象。同样的错误。 我尝试了身份验证:主机:'smtp.gmail.com',端口:'465',安全:真。同样的错误。 在本地环境中,以防有助于修复错误。 如何解决这个 535 错误?

【问题讨论】:

【参考方案1】:

Feathers-Mailer 包含 nodemailer 并自动执行.createTransport。 SMTP 传输模块是错误并且不需要。 mailer(transport-object) 工作。

【讨论】:

以上是关于如何使用 gmail api 使用 nodemailer smtp oauth2?收到错误 535:不接受用户和通行证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Gmail API 阻止发件人?

如何使用 nodejs 下载 Gmail API 的附件?

使用 gmail API 设置用户签名 - 如何

如何设置凭据以从 GCE VM 命令行使用 Gmail API?

访问未授予或过期 GMAIL API 和 Oauth2 / 如何使用 GMAIL API 和 GSuite 域设置电子邮件签名

您如何使用 gmail api 查询已发送的项目?