Node.js NodeEmailer无法使用gmail发送邮件

Node.js NodeEmailer无法使用gmail发送邮件,node.js,email,nodemailer,Node.js,Email,Nodemailer,我正试图通过nodemailer发送电子邮件,但无法发送电子邮件,并显示以下错误 { [Error: Invalid login] code: 'EAUTH', response: '534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsTr\n534-5.7.14 2r0PE8hXz57GMK9aydA3GouUGQr1Pc2wBywEf6i09kKVOv9Qv

我正试图通过nodemailer发送电子邮件,但无法发送电子邮件,并显示以下错误

{ [Error: Invalid login]
  code: 'EAUTH',
  response: '534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsTr\n534-5.7.14 2r0PE8hXz57GMK9aydA3GouUGQr1Pc2wBywEf6i09kKVOv9Qv5y9Csy_lL-PIgUO6ML8uA\n534-5.7.14 ZsEiEkpAU0N5aiQBZdI1urKo3XfCiiS2MhjiUZaBgpn88sFXR-sBeA5ydMc_Md1F5wDcbX\n534-5.7.14 7ynrcVC-h0H_-e_ptvGhA3ywiHOSoDZAxzrindvEMNkXmCilbo9J7ITdlXFKwQjITaIkei\n534-5.7.14 Tk8QMKEY22ldNjE78Lh2ekheLd5M> Please log in via your web browser and\n534-5.7.14 then try again.\n534-5.7.14  Learn more at\n534 5.7.14  https://support.google.com/mail/answer/78754 21sm9309692qgj.21 - gsmtp',
  responseCode: 534 }
{[错误:无效登录]
代码:“EAUTH”,
响应:“534-5.7.14请通过web浏览器登录,\n534-5.7.14然后重试。\n534-5.7.14在\n534 5.7.14了解更多信息https://support.google.com/mail/answer/78754 21sm9309692qgj.21-gsmtp',
响应代码:534}
我使用的是nodemailer文档中显示的精确代码

这是我正在使用的服务器端代码

var transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
       user: 'username',
       pass: 'password'
    }
});

app.post('/sendfeedbackmail', function(req, res) {

    var mailOptions = {
        from: 'Feedback<username@gmail.com>', // sender address 
        to: 'user1@gmail.com', // receiver 
        subject: 'Subject', // Subject line 
        text: mailData, // plaintext body 
        html: mailData // html body 
    };

   // send mail with defined transport object 
   transporter.sendMail(mailOptions, function(error, info) {
       if (error) {
          console.log(error);
          res.send({success:false});
       }else{
           res.send({
              success: true
           })
       }
   });
})
var transporter=nodeEmailer.createTransport({
服务:“Gmail”,
认证:{
用户:“用户名”,
通行证:“密码”
}
});
app.post('/sendfeedbackmail',函数(req,res){
var mailpoptions={
发件人:'反馈',//发件人地址
致:'user1@gmail.com“,//接收器
主题:'主题',//主题行
text:mailData,//纯文本正文
html:mailData//html正文
};
//使用定义的传输对象发送邮件
transporter.sendMail(邮件选项,函数(错误,信息){
如果(错误){
console.log(错误);
res.send({success:false});
}否则{
res.send({
成功:真的
})
}
});
})
这在几天前还可以正常工作,但对于其他电子邮件客户端来说仍然可以正常工作,然后是gmail,因此我认为这个问题可能与gmail帐户的任何安全设置有关。

UPDATE 检查以注册您的申请


您需要这样的东西才能在Gmail上进行身份验证:

var xoauth2 = require('xoauth2');
var nodemailer = require('nodemailer');
var smtp = require('nodemailer-smtp-transport');

var generator = xoauth2.createXOAuth2Generator({
  user: '..',
  clientId: '...',
  clientSecret: '...',
  refreshToken: '...',
  accessToken: ''
});
generator.on('token', function(token){
  console.info('new token', token.accessToken);
  // maybe you want to store this token
});

var transporter_google = nodemailer.createTransport(smtp({
  name: '...',
  host: '...',
  port: 587,
  secure: false,
  ignoreTLS: false,
  tls: { rejectUnauthorized: true },
  debug: false,
  auth: { xoauth2: generator }
}));

而不是用户名=输入有效的电子邮件id,密码=密码

类似谷歌的邮件会再次向你的Gmail显示警报

(谷歌将继续阻止您正在使用的应用程序的登录尝试,因为该应用程序存在已知的安全问题或已过期。您可以通过允许访问不太安全的应用程序继续使用该应用程序,但这可能会使您的帐户易受攻击。 )

您需要允许从其他邮件程序进行访问

然后它会生成响应,您可能需要在您的gmail帐户中输入“”(一直在底部)。您可能还需要使用“”。在这里查看有关使用Gmail的详细信息

我在github上找到的上述解决方案对我有效。这是答案。

看看这个
var transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
       user: 'username',
       pass: 'password'
    }
});