使用nodemailer时不接受用户名和密码?

时间:2017-08-03 08:03:33

标签: node.js nodemailer

这是我的settingController:

var sendSmtpMail = function (req,res) {
  var transport = nodemailer.createTransport({
  service:'gmail',
   auth: {
             user: "asdfqweerrccb@limitlesscircle.com",
             pass: "qwerr@wee"
        }
   });
   var mailOptions = {
        from: "transactions@limitlesscircle.com", 
        to:'umaraja1124@gmail.com', 
        subject: req.body.subject+"nodejs working ?", 
        text: "Hello world ?",  
    }
    transport.sendMail(mailOptions, function(error, response){
      if(error){
         res.send("Email could not sent due to error: "+error);
         console.log('Error');
       }else{
         res.send("Email has been sent successfully");
         console.log('mail sent');
      } 
  }); 
在邮递员中我得到了这样的错误:

由于错误而无法发送电子邮件:

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 g7sm64435626pfj.29 - gsmtp

8 个答案:

答案 0 :(得分:15)

我认为首先您需要在Google帐户中进行Allow less secure apps to access account设置 - 默认情况下,此设置为关闭,您只需将其设置为

然后,我使用以下脚本从 gmail 帐户发送电子邮件,同时使用 yahoo hotmail 帐户进行测试。

const nodemailer = require('nodemailer');

let transporter = nodemailer.createTransport({
    host: 'smtp.gmail.com',
    port: 587,
    secure: false,
    requireTLS: true,
    auth: {
        user: 'your.gmail.account@gmail.com',
        pass: 'your.password'
    }
});

let mailOptions = {
    from: 'your.gmail.account@gmail.com',
    to: 'receivers.email@domain.com',
    subject: 'Test',
    text: 'Hello World!'
};

transporter.sendMail(mailOptions, (error, info) => {
    if (error) {
        return console.log(error.message);
    }
    console.log('success');
});

如果您将前面的代码放在 send-email.js 中,请打开终端并写信:

node send-email

如果电子邮件发送成功或nodemailer

返回错误消息,您应该会在控制台中看到成功

不要忘记先进行设置 - Allow less secure apps to access account

我希望这段代码对您有用。祝你好运!

答案 1 :(得分:7)

如果您在自己的Google帐户中启用了双因素身份验证,则无法使用常规密码以编程方式访问Gmail。您需要生成应用专用密码,并使用该密码代替您的实际密码。

步骤:

  • 登录您的Google帐户
  • 转到我的帐户>登录&安全>应用密码
  • (再次登录确认是你)
  • 向下滚动到选择应用程序(在密码和登录方法框中) 并选择其他(自定义名称)
  • 为此应用密码指定名称,例如“nodemailer”
  • 选择生成
  • 复制生成的长密码并将其粘贴到Node.js脚本中,而不是实际的Gmail密码。 (你不需要空格。)

您的脚本现在看起来像这样:

var transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'YOUR-GMAIL-USERNAME@gmail.com',
    pass: 'YOUR-GENERATED-APP-PASSWORD'
  }
});

我希望这有助于某人。

答案 2 :(得分:3)

我遇到了同样的问题,我如下解决了该问题:

  1. 转到https://admin.google.com,然后使用您用于设置公司帐户和创建用户的主帐户登录。请记住使用主电子邮件ID。

Main Screen after logging in

  1. 单击“安全性”图标,您将转到此页面,在该页面中,将看到“不安全的应用程序”部分,然后单击它。 enter image description here

  2. 现在您将在此处看到此内容,允许用户或授予权限。enter image description here

  3. 您尚未完成,请转到以下链接: https://myaccount.google.com/u/1/lesssecureapps

enter image description here

现在您将看到开关。启用它,然后尝试它肯定会起作用。

和平:)

答案 3 :(得分:3)

https://myaccount.google.com/lesssecureapps(如果已关闭),请将其打开以启用lesssecureapps。 (我遇到了同样的问题,请立即打开以解决我的问题)

答案 4 :(得分:1)

您必须允许“不安全应用”访问您Google帐户中的帐户设置-默认情况下,此设置为关闭状态,您只需打开即可。 Image example

答案 5 :(得分:0)

您正在使用Gmail服务,因此您的邮件必须位于Gmail:

var transport = nodemailer.createTransport({
service:'gmail',
 auth: {
             user: "asdfqweerrccb@gmail.com",
             pass: "qwerr@wee"
        }
    });
var mailOptions = {
        from: "transactions@gmail.com", 
        to:'umaraja1124@gmail.com', 
        subject: req.body.subject+"nodejs working ?", 
        text: "Hello world ?",  
    }
transport.sendMail(mailOptions, function(error, response){
    if(error){
         res.send("Email could not sent due to error: "+error);
         console.log('Error');
    }else{
         res.send("Email has been sent successfully");
         console.log('mail sent');
    } 
}); 

答案 6 :(得分:0)

请确保您使用的端口正确:即port: 587

访问此链接以允许不太安全的应用访问:https://myaccount.google.com/lesssecureapps

在以下链接上启用重新拼写:https://accounts.google.com/b/0/DisplayUnlockCaptcha

等待几分钟,然后尝试发送电子邮件。

或者使用sendgrid。它有一个免费版本。

如果收件箱中没有看到电子邮件,请检查“垃圾邮件”文件夹。

答案 7 :(得分:0)

使用SMTP通过它进行发送需要一些帐户设置。

如果您在帐户上启用了两步验证,则需要在设备设置中使用应用专用密码(在Gmail帐户中创建):使用应用专用密码登录

如果没有,请尝试以下操作:在https://mail.google.com上使用网络浏览器登录Gmail帐户,然后转到“设置”>“帐户和导入”>“其他Google帐户”设置。在“安全性”下,向下滚动并启用对安全性较低的应用程序的访问。必须启用此设置才能启用SMTP,POP或IMAP访问。

如果仍然存在问题,请尝试清除验证码:访问https://accounts.google.com/DisplayUnlockCaptcha并使用Gmail用户名和密码登录。如有必要(通常​​不需要),请在变形的图片中输入字母,然后按继续。设备需要十分钟才能注册为批准的连接。请注意,您必须使用要添加到设备中的帐户-如果浏览器已经登录到另一个帐户,则必须先退出。另外,您必须在按“继续”十分钟之内触发设备建立连接。

Google支持小组的说明