如何解决带有privateemail smtp服务器的nodemailer的身份验证失败
我正在使用私人电子邮件SMTP服务器将密码重置发送给用户。他们的网站指示使用端口465,并在nodemailer中将安全性设置为true。我似乎连接正常,但无法进行身份验证。我已经仔细检查了我的用户名和密码,所以我知道问题出在我的nodemailer配置上:
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 + '.');
});
有什么想法吗?
解决方法
您可以通过在nodemailer createTransport函数中添加以下参数来调试nodemailer:
debug: true,// show debug output
logger: true // log information in console
这样做,我发现用户名和密码环境变量在其字符串中带有引号和分号。解决方案是按如下所示设置密码和用户名,不要使用引号或分号:
EMAIL_USERNAME = no-reply@****.com
EMAIL_PASSWORD = password
,
我认为您必须通过secureConnection:true
而不是secure:true
也是端口587而不是465检查这里namecheap docs
所以这是修改后的代码
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 + '.');
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。