当前位置: 首页 > 知识库问答 >
问题:

Nodemailer无法使用gmail发送邮件

董联
2023-03-14

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

{ [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 }

我使用的是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
           })
       }
   });
})

这在几天前运行良好,在其他邮件客户端和gmail上也运行良好,因此我认为这个问题可能与gmail帐户的任何安全设置有关。

共有3个答案

邓德惠
2023-03-14
var transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
       user: 'username',
       pass: 'password'
    }
});

而不是用户名 = 输入您的有效电子邮件 ID 和密码 = 您的密码

再次从谷歌向您的Gmail显示警报,就像

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

您需要允许其他邮件程序的访问

然后它生成响应

齐学文
2023-03-14

您可能需要在您的gmail帐户中“允许不太安全的应用程序”(一直在底部)。你可能还需要“允许访问你的谷歌账户”。点击此处查看使用Gmail的详细信息。

我在github上找到了上述解决方案。这是链接。

濮阳祯
2023-03-14

检查http://masashi-k.blogspot.com.br/2013/06/sending-mail-with-gmail-using-xoauth2.html注册您的申请。

您需要类似这样的东西才能在 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 }
}));

参见https://github . com/andris 9/node mailer-SMTP-transport # authentic ation。

 类似资料:
  • 我已经创建了一个帐户与sendInBlue,并导入了nodemailer和nodemailer-sendinblue-transport到我的项目中,我正在尝试发送一个简单的确认电子邮件。下面的代码是我如何尝试安装的: 下面的代码是我的注册方法中负责发送确认邮件的一节: 当我运行我的程序时,注册过程成功,但抛出以下错误,而不是发送电子邮件: 错误:在数据库中找不到键(失败,401) 我读到他们的v

  • 我有这个发邮件的密码 此代码为除之外的任何邮件提供商发送邮件。 这可能是什么原因

  • 我已经在本地()设置了一个基本的NodeJS服务器(使用nodemailer模块),这样我就可以测试该服务器是否真的可以发送电子邮件。 如果我正确理解SMTP选项(如果我错了,请纠正我),我可以尝试从我的服务器直接发送电子邮件到某人的电子邮件帐户,或者我可以发送电子邮件,仍然使用node.js,但通过一个实际的电子邮件帐户(在本例中是我的个人Gmail帐户),即使用SMTP。此选项要求我通过Nod

  • Google::API::ClientError(InvalidArgument:需要收件人地址) 我检查过用ruby gmail api V0.9发送电子邮件,我也发现了这一点,但它使用了类,而我在gmail api ruby客户端库中找不到。当前,包含字符,但我在没有它的情况下对它进行了测试,结果它不起作用。 而且,我还想在邮件中发送附件。

  • 问题内容: 我正在尝试smtp.gmail.com在Django 1.8中使用发送邮件 我的settings.py包含: 但是得到了这个错误 我尝试了文档所说的所有内容,并遵循了许多建议的解决方案。 例如https://accounts.google.com/DisplayUnlockCaptcha,启用安全性较低的应用程序等。 但我仍然有错误 谁能说出如何正确配置Django 1.8以使用Gma

  • 我有一个代码,就像半年前一样工作。它基本上发送电子邮件。 这是例外 (534, b'5.7.14 5.7.14 KL7\u 2qGSLW9IBjP8dKKgP67bEgyKNc5ls76dnVDZcUlVQjJUQb0JX9BIVi\u Agb84vKNOKB 5.7.14fshB0ngZ_Tn8ocDpDHKavRKXmluVjHo5YM7ADKENtWn4aVTxyvaBlbXRGpA1EBh