错误:无效登录:535-5.7.8 不接受用户名和密码

Hai*_*oob 27 javascript gmail smtp-auth node.js

下面的代码非常适合使用 node.js 代码/程序发送电子邮件。但是,仍然收到标题中提到的错误。

var nodemailer = require('nodemailer');

var transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'haideryaqoobengr@gmail.com',
    pass: '**********'
  }
});

var mailOptions = {
  from: 'haideryaqoobengr@gmail.com',
  to: 'haideryaqoob720@gmail.com',
  subject: 'Sending Email using Node.js',
  text: 'That was easy!'
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    console.log(error);
  } else {
    console.log('Email sent: ' + info.response);
  }
});
Run Code Online (Sandbox Code Playgroud)

Hai*_*oob 53

是的,代码是完美的。但是,您需要允许 Google 帐户中安全性较低的应用程序发送电子邮件。通过这个链接。 允许来自您的 Google 帐户的安全性较低的应用

  • 尽管我已经切换了“允许不太安全的应用程序:打开”,但这对我不起作用 (9认同)
  • 如果对 Node.js 后端执行相同操作后仍无法正常工作怎么办? (2认同)

Dar*_*usV 29

谷歌现在禁用了不太安全的应用程序,因此您需要设置使用应用程序密码登录 总之,您必须使用两因素身份验证设置您的访问权限才能允许应用程序密码

transport: {
  host: 'smtp.gmail.com',
  port: 465,
  secure: true,
  auth: {
    user: 'contact@gmail.com',
    pass: 'app password',
  },
},
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!对于看不到设置“应用程序密码”选项的用户,请确保在您的 Gmail 帐户上启用两步验证。我必须这样做才能在 [Google 帐户安全页面](https://myaccount.google.com/security) 上看到访问“应用程序密码”页面的选项。 (4认同)

Mr.*_*han 25

有一个非常简单的解决方案。按照以下步骤使用节点(nodemailer)从您的 gmail 发送电子邮件

  1. 第 1 步:打开此链接https://myaccount.google.com/security

  2. 步骤2:启用双因素身份验证

  3. 单击两因素身份验证下方的应用程序密码

    2023年7月后更新->第3步有变化,即App密码可以在双因素认证界面的页面底部找到。

  4. “选择应用程序”选项中选择“其他”并写入您的应用程序名称,它可以是任何名称,例如 mycustomapp

  5. 它将生成密码,从弹出窗口复制密码并使用以下代码。

  6. 在代码的身份验证密码部分使用复制的密码

  const nodemailer = require('nodemailer');

  const transporter = nodemailer.createTransport({
   service: 'gmail',
   host: 'smtp.gmail.com',
   port: 465,
   secure: true,
   auth: {
    user: 'your gmail here',
    pass: 'your app generated password here',
   },
  });

  const sendEmail = (email, token) => {
   const mailOptions = {
    from: 'niazi@gmail.com',
    to: email,
    subject: 'Email verification',
    html:
  '<p>Please click on the following link to verify your email address:</p>' +
  '<a href="http://localhost:3000/verify/' +
  token +
  '">http://localhost:3000/verify/' +
  token +
    '</a>',
  };

  transporter.sendMail(mailOptions, function (error, info) {
    if (error) {
      console.log('Error in sending email  ' + error);
      return true;
    } else {
     console.log('Email sent: ' + info.response);
     return false;
    }
   });
  };

  module.exports = sendEmail;
Run Code Online (Sandbox Code Playgroud)