Node.js 使用PrivateMail smtp服务器的NodeEmailer身份验证失败
我正在使用私有电子邮件SMTP服务器向用户发送密码重置。他们的网站指示使用端口465,并在NodeEmailer中将安全设置为true。我似乎连接良好,但我无法验证。我已经仔细检查了我的用户名和密码,因此我知道问题出在我的NodeEmailer配置上:Node.js 使用PrivateMail smtp服务器的NodeEmailer身份验证失败,node.js,smtp,nodemailer,Node.js,Smtp,Nodemailer,我正在使用私有电子邮件SMTP服务器向用户发送密码重置。他们的网站指示使用端口465,并在NodeEmailer中将安全设置为true。我似乎连接良好,但我无法验证。我已经仔细检查了我的用户名和密码,因此我知道问题出在我的NodeEmailer配置上: var transporter = nodemailer.createTransport({ host: 'mail.privateemail.com', port: 465, secure: true, auth: {
var transporter = nodemailer.createTransport({
host: 'mail.privateemail.com',
port: 465,
secure: true,
auth: {
user: process.env.SMTP_USERNAME,
pass: process.env.SMTP_PASSWORD
}
});
var mailOptions = {
from: 'no-reply@****.com',
to: user.email,
subject: 'Reset Password',
text: 'Hello,\n\n'
+ 'Please reset your password by clicking the link: \nhttp:\/\/'
+ req.headers.host + '\/confirmation\/' + token.token + '.\n'
};
transporter.sendMail(mailOptions, function (err) {
if (err) { return res.status(500).send({ msg: err.message }); }
res.status(200).send('A password reset email has been sent to ' + user.email + '.');
});
有什么想法吗?您可以通过向NodeEmailr createTransport函数添加以下参数来调试NodeEmailr:
debug: true, // show debug output
logger: true // log information in console
在这样做时,我发现username和password环境变量的字符串中有引号和分号。解决方案是按如下方式设置密码和用户名,不带引号或分号:
EMAIL_USERNAME = no-reply@****.com
EMAIL_PASSWORD = password
我认为您必须通过
secureConnection:true
而不是secure:true
此外,端口是587而不是465请检查此处
这是修改后的代码
var transporter = nodemailer.createTransport({
host: 'mail.privateemail.com',
port: 587,
secureConnection: true,
auth: {
user: process.env.SMTP_USERNAME,
pass: process.env.SMTP_PASSWORD
}
});
var mailOptions = {
from: 'no-reply@****.com',
to: user.email,
subject: 'Reset Password',
text: 'Hello,\n\n'
+ 'Please reset your password by clicking the link: \nhttp:\/\/'
+ req.headers.host + '\/confirmation\/' + token.token + '.\n'
};
transporter.sendMail(mailOptions, function (err) {
if (err) { return res.status(500).send({ msg: err.message }); }
res.status(200).send('A password reset email has been sent to ' + user.email + '.');
});