如何使用 gmail api 使用 nodemailer smtp oauth2?收到错误 535:用户和通行证未被接受
How to work nodemailer smtp oauth2 with gmail api? Got error 535: user and pass not accepted
我在 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' 以防万一。
我确信这些应用得到了正确的值,因为
我已经用精确值替换了应用程序获取,但它仍然给出相同的错误。
我还尝试了删除 'host'、'port'、'secure'、'requireTLS' 的 auth 对象。同样的错误。
我尝试了 auth: host: 'smtp.gmail.com', port:'465', secure: true。同样的错误。
在本地环境中,万一它有助于修复错误。
我该如何解决这个 535 错误?
Feathers-Mailer 包含 nodemailer 并自动执行 .createTransport
。 SMTP 传输模块是错误的,不需要。 mailer({transport-object})
成功了。
我在 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' 以防万一。
我确信这些应用得到了正确的值,因为
我已经用精确值替换了应用程序获取,但它仍然给出相同的错误。
我还尝试了删除 'host'、'port'、'secure'、'requireTLS' 的 auth 对象。同样的错误。
我尝试了 auth: host: 'smtp.gmail.com', port:'465', secure: true。同样的错误。
在本地环境中,万一它有助于修复错误。
我该如何解决这个 535 错误?
Feathers-Mailer 包含 nodemailer 并自动执行 .createTransport
。 SMTP 传输模块是错误的,不需要。 mailer({transport-object})
成功了。