Node.js 不接受Nodejs nodeEmailer用户名和密码
我试图用nodejs和nodemailer发送邮件,但这对我不起作用。我有以下代码: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
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});
});
注意:
被接受的答案对我不起作用。这四个步骤是:
- 使用管理员帐户登录您的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。我认为这就是问题所在。使用问题中描述的相同配置,我可以发送电子邮件。您好,我做了所有这些配置,我不允许安全应用程序,但它不工作!