📅  最后修改于: 2023-12-03 15:17:53.570000             🧑  作者: Mango
在使用 Node.js 以及 Nodemailer 发送电子邮件的过程中,有时候会遇到以下的错误信息:
Error: Invalid login: 535-5.7.8 Username and Password not accepted.
这个错误信息的含义是:登录无效,邮箱的用户名和密码不被接受。导致邮件发送失败。
本篇文章将介绍可能导致这个错误的原因以及相应的解决方法,并提供代码片段作为示例。希望对您解决这个问题有所帮助。
这个错误通常是由于以下原因导致的:
在大多数情况下,这个错误是因为邮箱服务商的登录安全策略限制导致的。这种限制通常包括以下内容:
以下是解决方法:
确认邮箱用户名和密码是否正确。如果不正确,将无法进行登录。如果您无法确定您的用户名和密码,请联系您的邮箱服务商以获取帮助。
您可以尝试使用 SSL 或 TLS 的安全连接。只需在 Nodemailer 中配置相应的选项:
const transporter = nodemailer.createTransport({
host: 'smtp.example.com',
port: 465,
secure: true,
auth: {
user: 'user@example.com',
pass: 'password'
}
});
在这个示例中,我们将 secure
设置为 true
,表示使用安全连接。
如果您的邮箱服务商启用了 Two-factor Authentication(多因素认证),请确保您正确配置了身份验证器,并在 Nodemailer 中使用相应的选项。
const transporter = nodemailer.createTransport({
host: 'smtp.example.com',
port: 587,
auth: {
user: 'user@example.com',
pass: 'password'
},
tls: {
rejectUnauthorized: false
}
});
在这个示例中,我们将 tls.rejectUnauthorized
设置为 false
,以解除对证书的验证。
如果您的邮箱服务商设置了应用程序密码,请确保在 Nodemailer 中使用正确的密码。
const transporter = nodemailer.createTransport({
host: 'smtp.example.com',
port: 587,
auth: {
user: 'user@example.com',
pass: 'application-specific-password'
}
});
在这个示例中,我们使用了邮箱服务商生成的应用程序密码。
通过本文的介绍,您现在应该已经理解并能够解决登录无效的 Nodemailer 错误。如果您仍然遇到问题,请联系您的邮箱服务商以获取帮助。