在NodeJS中发送电子邮件Nodemailer会导致错误:登录无效

时间:2017-05-18 11:14:10

标签: node.js google-api oauth-2.0 google-oauth nodemailer

我正在尝试使用Nodemailer和nodeJS服务器上的gmail帐户发送电子邮件。我知道在Stackoverflow上有很多关于如何做到这一点的问题。

最有帮助的是下面的答案。其中介绍了如何使用Oauth playground工具访问Drive API(在我的案例中为GMAIL API)。

How do I authorise an app (web or installed) without user intervention? (canonical ?)

所以我完全按照这些步骤(加上允许更少保护应用程序)然后在nodejs中我尝试使用Nodemailer发送电子邮件如下:

createTransport

var transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    type: 'OAuth2',
    user: globals.admin_email,
    clientId: globals.client_id,
    clientSecret: globals.secret,
    refreshToken: globals.refresh_token,
    accessToken: globals.access_token,
  },
});

定义电子邮件选项

var mail_options = {
        from: globals.admin_email,
        to: receiver_email, // list of receivers
        subject: 'API key request',
        html: '<h3>A new API key request<h3> </br> <h5>From: ' + user_name + '</h5> </br>' +
        '<h5>Email: ' + user_email + '</h5> </br> <h5> Institute: ' + user_insititute + '</h5>' +
        '<p>You can generate keys by going to /gen_keys</p>',
    };

Sendmail的

transporter.sendMail(mail_options, function (err, info) {
        if (err) {
            console.log(err);
            return err;
        }
        console.log('Sent email: ' + info.response);
    })

但是,当我运行代码时,我收到以下错误

{ [Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8  https://support.google.com/mail/?p=BadCredentials 43sm6162153wrx.26 - gsmtp]
  code: 'EAUTH',
  response: '535-5.7.8 Username and Password not accepted. Learn more at\n535 5.7.8  https://support.google.com/mail/?p=BadCredentials 43sm6162153wrx.26 - gsmtp',
  responseCode: 535,
  command: 'AUTH PLAIN' }

这很奇怪,因为我没有使用基本身份验证(用户名和密码)。我正在使用Oauth使用我在开发人员控制台上创建的凭据(OAuth客户端ID)

有什么建议吗?

编辑: 有些错误是错误地设定范围。 我检查了授权范围,它是https://mail.google.com/ 所以这可能不是这里的问题

0 个答案:

没有答案