Node.js 不接受Nodejs nodeEmailer用户名和密码

Node.js 不接受Nodejs nodeEmailer用户名和密码,node.js,nodemailer,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, rej

我试图用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);
                }
            });


        });
    }

};
我得到了这个错误:

{错误:无效登录:535-5.7.8不接受用户名和密码。 在535.7.8了解更多信息 p6sm97493129wrx.50- gsmtp 在SMTPConnection.\格式错误(C:\Users\Carlos\Desktop\Proyectos\nodeServer\node\u modules\nodemailer\lib\smtp connection\index.js:774:19) 在SMTPConnection.\u actionAUTHComplete(C:\Users\Carlos\Desktop\Proyectos\nodeServer\node\u modules\nodeEmailr\lib\smtp connection\index.js:1509:34) 在SMTPConnection.\u responseActions.push.str(C:\Users\Carlos\Desktop\Proyectos\nodeServer\node\u modules\nodemailer\lib\smtp connection\index.js:547:26) 在SMTPConnection.\u processResponse(C:\Users\Carlos\Desktop\Proyectos\nodeServer\node\u modules\NodeEmailr\lib\smtp connection\index.js:933:20) 在SMTPConnection.\u onData(C:\Users\Carlos\Desktop\Proyectos\nodeServer\node\u modules\nodemailer\lib\smtp connection\index.js:739:14) 在TLSSocket.\u socket.on.chunk(C:\Users\Carlos\Desktop\Proyectos\nodeServer\node\u modules\nodemailer\lib\smtp connection\index.js:691:47) 在TLSSocket.emit(events.js:182:13) 在addChunk(_stream_readable.js:283:12) 在readableAddChunk(_stream_readable.js:264:11) 在TLSSocket.Readable.push(_stream_Readable.js:219:10)上,代码:“EAUTH”,响应:“535-5.7.8用户名和密码不被接受。 有关详细信息,请访问\n535 5.7.8 p6sm97493129wrx.50- gsmtp',响应代码:535,命令:'AUTH PLAIN'}

我已经在我的gmail帐户上更改了相应的参数“不太安全的应用程序”。 我也尝试了另一个非gmail帐户。 我试过这个:

service: 'gmail',
对于连接,这是:

host: 'smtp.gmail.com',
port: 465,
secure: true,
我在stackoverflow中阅读了所有“类似问题”,我不知道我是否还需要什么,或者我是否做了什么坏事。(当然,我已经修改了两个帐户中的用户名和密码,它们都没有问题)

我做了什么坏事

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;
用法

//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 });
    });
//导入transporter JS文件
const mail=require('../utils/mail');
设htmlContent=`
联系方式

${name}已与以下详细信息联系


电子邮件:${Email}

电话:${Phone}

公司名称:${companyName}

消息:${Message}

` 让邮件选项={ 摘自:“示例”, 至:me@gmail.com", 主题:“邮件测试”, 正文:“, html:htmlContent } mail.sendMail(邮件选项) .然后(功能(电子邮件){ json({success:true,msg:'Mail sent'}); }).catch(函数(异常){ json({success:false,msg:exception}); });
注意:

  • 在使用gmail发送电子邮件之前,您必须允许非安全应用程序访问gmail,您可以通过进入gmail设置来实现这一点

  • 同时启用验证码


  • 被接受的答案对我不起作用。这四个步骤是:

    • 使用管理员帐户登录您的Google管理控制台

    • 从管理控制台仪表板,转到安全,然后是基本设置(您可能需要单击底部的更多控件)

    • 在不太安全的应用下,选择转到不太安全应用的设置

    • 在子窗口中,选择“为所有用户启用对不太安全的应用的访问”单选按钮


    您是否尝试了
    安全:false
    ?如果仍然不起作用,请尝试使用
    secure:true
    port:587
    。您好,我有一个错误“error:Unexpected socket close”和一个错误“{[error:16212:error:1408F10B:SSL例程:ssl3_get_记录:错误的版本号:openssl\SSL\record\ssl3_记录。c:252:]代码:'ECONNECTION',命令:'CONN'}”对于port=587和secure=True,Web上的其他资源提到了在该链接上执行该步骤:我恐怕在此之后我不会有太多帮助。是的,我忘了提到我也尝试过该解锁,但谢谢你。好吧,我不知道为什么,但对于port“port:25”,它可以工作(使用原始代码)。非常感谢(清楚的回答和明确的定义)。我对此也有疑问。更改为端口25并没有为我修复它。你能分享你的代码吗。。所以我可以看看它@SoubriquetI认为问题不在于nodemailer transporter的配置,而在于gmail的限制。在发送电子邮件之前,您应该允许非安全应用程序访问gmail。我认为这就是问题所在。使用问题中描述的相同配置,我可以发送电子邮件。您好,我做了所有这些配置,我不允许安全应用程序,但它不工作!