当前位置: 首页 > 知识库问答 >
问题:

使用PrivateMail smtp服务器的NodeEmailer身份验证失败

宓博实
2023-03-14

我正在使用私有电子邮件SMTP服务器向用户发送密码重置。他们的网站指示使用端口465,并在NodeEmailer中将安全设置为true。我似乎连接良好,但我无法验证。我已经仔细检查了我的用户名和密码,因此我知道问题出在我的NodeEmailer配置上:

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 + '.');
});

有什么想法吗?

共有2个答案

凤自珍
2023-03-14

我认为你必须通过secureConnection: true而不是安全: 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 + '.');
});
焦正德
2023-03-14

您可以通过向NodeEmailr createTransport函数添加以下参数来调试NodeEmailr:

  debug: true, // show debug output
  logger: true // log information in console

在这样做时,我发现username和password环境变量的字符串中有引号和分号。解决方案是按如下方式设置密码和用户名,不带引号或分号:

EMAIL_USERNAME = no-reply@****.com
EMAIL_PASSWORD = password
 类似资料:
  • 我想测试一个WSO2身份提供程序,实际上是它用OpenID配置的联合IdP,我计划使用TraSpeed工具对其进行测试。我正在WEB-INF配置中编辑travelocity.properties文件,将起始参数设置为以下值: 在Tomcat7服务器中声明映像时,它接受新的服务器配置,但代码仍将SAML身份验证激活为主要SSO机制,抛出错误: 是否可以仅使用OpenID堆栈在该Web工具中停用SAM

  • 问题内容: 以下是我从GoLang获得的MongoDB连接拨号。但是它返回一个紧急消息“ SASL身份验证步骤服务器返回错误:身份验证失败。 ”。我的用户名,密码,hostAddrs和dbName是正确的。我在这里想念什么? 问题答案: 我遇到类似的错误并添加了参数,并且在我们连接到远程MongoDB时可以正常工作 在您的代码中使用以下类似格式:

  • 它总是导致带有错误消息的catch块 登录失败:未知的用户名或错误的密码。失败:未知的用户名或错误的密码。 我确信给定的密码是正确的。 如何使用给定的密码验证用户名?

  • 我正在尝试在一个microservice中配置一个microservice,但我正在尝试在另一个microservice中配置一个microservice如何进行身份验证。这就是我试图归档的体系结构: 我已经设法让用户授权工作并保护了微服务A,现在我正在尝试授权来自微服务B的请求,但我不确定如何做到这一点,我是否应该为微服务B在KeyCape中创建一个专用用户,或者在realm中创建客户端,或者其

  • 我试图扩展用户身份验证示例,这里也给出了这个示例,以便多个用户可以登录到服务器。我还想为每个用户分配一个不同的主目录。到目前为止,我还没有找到Apache SSHD API提供的任何此类实用程序,因此我尝试了以下解决方案,使用Apache FTPServer提供的实用程序。 我试图做的是:

  • 我正在编写一个程序,用于验证通过HTTP POST发送的用户名和密码,并根据ldap进行验证,无论验证是否成功,都将响应发送回用户。 我的Websecurity配置器实现 我的测试服务器.ldif