带有Gmail错误的Nodemailer:454 4.7.0由于临时系统问题无法进行身份验证

时间:2016-05-21 21:43:37

标签: node.js express gmail gmail-api nodemailer

我正在使用nodemailer模块和我的nodejs / express.js应用程序。

我使用gmail作为传输器。

似乎每发送20封成功的电子邮件,我都会收到此错误:

454 4.7.0由于临时系统问题无法进行身份验证

我正在测试发票系统,所以我经常发送电子邮件到同一个电子邮件地址进行测试。

我没有使用Google应用,而且我已将Gmail安全设置为与低安全性应用配合使用。

发票很重要,如果我不能保证所有发票都会发送给我的客户,那么它就会变坏。

这是正常的吗?

app.get('/thankyou', function(req,res) {

  var transporter = nodemailer.createTransport({
    service: 'Gmail',
      auth: {
      user: 'somethinggggg@gmail.com',
      pass: 'password here'
      }
    });

   res.render('thankyou_email', function(err,html) {

     var mailOptions = {
       from: 'John Doe <somethinggggg@gmail.com>',
       to: 'someoneee@icloud.com',
       subject: 'Your order was received',
       html: html
     };

     transporter.sendMail(mailOptions, function(error, info) {
       if(error) {
        console.log('error1: ' + error);
        transporter.sendMail(mailOptions, function(error, info) {
          if(error) {
            console.log('error2: ' + error);
          } else {
            console.log('cool bro everything works2');
            console.log(info);
          }
        });
       } else {
        console.log('cool bro everything works');
        console.log(info);
       }
     });

     res.render('thankyou_page');
});

正如您所看到的,如果我有错误,我会再次尝试重新发送电子邮件,但仍然会收到同样的错误。

另请注意我使用res.render()两次。我觉得这很奇怪但它仍然有效。第一个res.render()用于生成电子邮件的html,最后一个res.render()用于将响应中的html呈现给客户端。我曾经两次收到有关发送标题的错误,但我不再看到该错误。尽管如此,它仍然奏效。

这是谁的错?我? Nodemailer? Gmail吗? 如果我要注册Google应用,我还会遇到这个问题吗?

1 个答案:

答案 0 :(得分:0)

我遇到了Nodemailer文档,Using OAuth2中说明如果在设置传输器对象时将XOAuth2令牌生成器用作auth.xoauth2的值,那么您不需要设置userpass的值,因为OAuth2用于验证。

  

如果XOAuth2生成器丢失或过期,则会生成所需的accessToken。如果身份验证失败,则会请求新令牌并重试身份验证一次。如果仍然失败,则返回错误。

示例代码在文档中给出。虽然,我没有亲自尝试过使用它,但我希望它适合你。 :)