📌  相关文章
📜  node js nodemailer 错误:登录无效:535-5.7.8 用户名和密码不被接受. - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:17:53.570000             🧑  作者: Mango

Node.js Nodemailer 错误:登录无效:535-5.7.8 用户名和密码不被接受.

引言

在使用 Node.js 以及 Nodemailer 发送电子邮件的过程中,有时候会遇到以下的错误信息:

Error: Invalid login: 535-5.7.8 Username and Password not accepted.

这个错误信息的含义是:登录无效,邮箱的用户名和密码不被接受。导致邮件发送失败。

本篇文章将介绍可能导致这个错误的原因以及相应的解决方法,并提供代码片段作为示例。希望对您解决这个问题有所帮助。

错误原因

这个错误通常是由于以下原因导致的:

  • 邮箱用户名或密码错误
  • 邮箱服务商的登录安全策略限制

在大多数情况下,这个错误是因为邮箱服务商的登录安全策略限制导致的。这种限制通常包括以下内容:

  • 服务器禁用了非安全连接(不使用 SSL 或 TLS)
  • 邮箱服务商启用了 Two-factor Authentication(多因素认证)
  • 邮箱服务商设置了应用程序密码
解决方法

以下是解决方法:

  1. 确认邮箱用户名和密码是否正确。如果不正确,将无法进行登录。如果您无法确定您的用户名和密码,请联系您的邮箱服务商以获取帮助。

  2. 您可以尝试使用 SSL 或 TLS 的安全连接。只需在 Nodemailer 中配置相应的选项:

    const transporter = nodemailer.createTransport({
      host: 'smtp.example.com',
      port: 465,
      secure: true,
      auth: {
        user: 'user@example.com',
        pass: 'password'
      }
    });
    

    在这个示例中,我们将 secure 设置为 true,表示使用安全连接。

  3. 如果您的邮箱服务商启用了 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,以解除对证书的验证。

  4. 如果您的邮箱服务商设置了应用程序密码,请确保在 Nodemailer 中使用正确的密码。

    const transporter = nodemailer.createTransport({
      host: 'smtp.example.com',
      port: 587,
      auth: {
        user: 'user@example.com',
        pass: 'application-specific-password'
      }
    });
    

    在这个示例中,我们使用了邮箱服务商生成的应用程序密码。

结论

通过本文的介绍,您现在应该已经理解并能够解决登录无效的 Nodemailer 错误。如果您仍然遇到问题,请联系您的邮箱服务商以获取帮助。