不接受 Nodejs nodemailer 用户名和密码

CVO*_*CVO 3 node.js nodemailer

我正在尝试使用 nodejs 和 nodemailer 发送邮件,但它对我不起作用。我有这个代码:

const config = require('../../config');
const http = require('http');
const nodemailer = require('nodemailer');

module.exports = {

    sendMail: function (params) {
        return new Promise((resolve, reject) => {

            var transporter = nodemailer.createTransport({
                //service: 'gmail', //I tried with this too
                host: 'smtp.gmail.com',
                port: 465,
                secure: true,
                auth: {
                    user: params.fromMail,
                    pass: params.fromPass
                }
            });

            var mailOptions = {
                from: params.fromMail,
                to: params.toMailList,
                subject: params.subject,
                html: params.mailHtmlContent,
            };

            transporter.sendMail(mailOptions, function(err, info){
                if (err) {
                    reject(err);
                } else {
                    resolve(info.response);
                }
            });


        });
    }

};
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

{ 错误:无效登录:535-5.7.8 用户名和密码不被接受。在 535 5.7.8 https://support.google.com/mail/?p=BadCredentials了解更多信息 \Users\Carlos\Desktop\Proyectos\nodeServer\node_modules\nodemailer\lib\smtp-connection\index.js:691:47) at TLSSocket.emit (events.js:182:13) at addChunk (_stream_readable.js:283) :12) at readableAddChunk (_stream_readable.js:264:11) at TLSSocket.Readable.push (_stream_readable.js:219:10) 代码:'EAUTH',响应:'535-5.7.8 用户名和密码不被接受。在\n535 5.7.8 了解更多信息 https://support.google.com/mail/?p=BadCredentials p6sm97493129wrx.50 - gsmtp',响应代码:535,命令:'AUTH PLAIN' }

我已经更改了我的 gmail 帐户中有关“安全性较低的应用程序”的对应参数。我也尝试过使用另一个非 gmail 帐户。我试过这个:

service: 'gmail',
Run Code Online (Sandbox Code Playgroud)

这用于连接:

host: 'smtp.gmail.com',
port: 465,
secure: true,
Run Code Online (Sandbox Code Playgroud)

我在 stackoverflow 中阅读了所有“类似问题”,我不知道我是否需要其他任何东西,或者我是否做错了什么。(当然,我已经修改了两个帐户中的用户名和密码,它们没问题)。

我在做什么坏事?

Roh*_*kla 8

var nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({
  service: 'gmail',//smtp.gmail.com  //in place of service use host...
  secure: false,//true
  port: 25,//465
  auth: {
    user: 'example@gmail.com',
    pass: 'password'
  }, tls: {
    rejectUnauthorized: false
  }
});

transporter.sendEMail = function (mailRequest) {
  return new Promise(function (resolve, reject) {
    transporter.sendMail(mailRequest, (error, info) => {
      if (error) {
        reject(error);
      } else {
        resolve("The message was sent!");
      }
    });
  });
}

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

用法

//import transporter JS file
const mail = require('../utils/mail');
let htmlContent = `
                <h1><strong>Contact Form</strong></h1>
                <p>Hi,</p>
                <p>${name} contacted with the following Details</p>
                <br/>
                <p>Email: ${email}</p>
                <p>Phone: ${phone}</p>
                <p>Company Name: ${companyName}</p>
                <p>Message: ${message}</p>
                `
    let mailOptions = {
        from: "Example <example@gmail.com>",
        to: "me@gmail.com",
        subject: "Mail Test",
        text: "",
        html: htmlContent
    }

mail.sendMail(mailOptions)
    .then(function (email) {
        res.status(200).json({ success: true, msg: 'Mail sent' });
    }).catch(function (exception) {
        res.status(200).json({ success: false, msg: exception });
    });
Run Code Online (Sandbox Code Playgroud)

笔记:

  1. 在使用 Gmail 发送电子邮件之前,您必须允许非安全应用访问 Gmail,您可以转到 Gmail 设置 https://myaccount.google.com/lesssecureapps?pli=1

  2. 同时启用验证码 https://accounts.google.com/DisplayUnlockCaptcha