Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Gmail错误:454.7.0由于临时系统问题,无法进行身份验证_Node.js_Express_Gmail_Gmail Api_Nodemailer - Fatal编程技术网

Node.js Gmail错误:454.7.0由于临时系统问题,无法进行身份验证

Node.js Gmail错误:454.7.0由于临时系统问题,无法进行身份验证,node.js,express,gmail,gmail-api,nodemailer,Node.js,Express,Gmail,Gmail Api,Nodemailer,我在nodejs/express.js应用程序中使用nodeEmailer模块 我使用gmail作为传输工具 似乎每发送20封成功的电子邮件,我就会收到以下错误: 由于临时系统问题,454.7.0无法进行身份验证 我正在测试一个发票系统,所以我会定期向同一个电子邮件地址发送电子邮件进行测试 我没有使用谷歌应用程序,我已经将Gmail安全设置为使用低安全性的应用程序 发票很重要,如果我不能保证所有发票都能寄给我的客户,那就糟糕了 这正常吗 app.get('/thankyou', function

我在nodejs/express.js应用程序中使用nodeEmailer模块

我使用gmail作为传输工具

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

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

我正在测试一个发票系统,所以我会定期向同一个电子邮件地址发送电子邮件进行测试

我没有使用谷歌应用程序,我已经将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');
});
app.get('/thankyou',函数(req,res){
var transporter=nodeEmailer.createTransport({
服务:“Gmail”,
认证:{
用户:'somethinggggg@gmail.com',
密码:“密码在这里”
}
});
res.render('thankyou\u email',函数(err,html){
var mailpoptions={
摘自:约翰·多伊,
致:'someoneee@icloud.com',
主题:“您的订单已收到”,
html:html
};
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
console.log('error1:'+error);
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
console.log('error2:'+error);
}否则{
log('cool bro everythings works2');
控制台日志(信息);
}
});
}否则{
console.log('cool bro everythings works');
控制台日志(信息);
}
});
res.render(“谢谢页面”);
});
正如你所看到的,如果我有一个错误,我会再次尝试重新发送电子邮件,但我仍然收到相同的错误

还请注意,我使用了res.render()两次。我认为这很奇怪,但它仍然有效。我使用的第一个res.render()生成电子邮件的html,最后一个res.render()生成电子邮件的html是将响应中的html呈现回客户端。我曾经两次收到发送头的错误,但我不再看到该错误。尽管如此,它仍然有效

这是谁的错?我?Nodmailer?Gmail? 如果我注册了Google apps,我还会有这个问题吗?

我遇到过一些文档,其中提到,如果在设置transporter对象时使用XOAuth2令牌生成器作为
auth.XOAuth2
的值,那么您就不需要像使用OAuth2一样设置
user
pass
的值d表示已验证

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


文档中给出了示例代码。虽然我个人没有尝试过使用它,但我希望它能与您一起使用。:)

您使用的是哪个版本的NodeEmailer和node?我使用的node 4.4.2和最新的NodeEmailer没有任何问题。@gunjan我使用的是v4.1.2和node.js以及最新版本的NodeEmailerDid。您有没有发现这个问题?在线阅读一些线程,这似乎是Google内部的问题。