"PLAIN" 的 Nodemailer 缺少凭据

Nodemailer Missing credentials for "PLAIN"

Nodemailer 使用完全相同的配置正常工作了几个月。

var smtpTransport = nodemailer.createTransport({ service: "Zoho", auth: { user: environment.smtp.email, password: environment.smtp.password }, secure: false, tls: { rejectUnauthorized: false } });

var mailOptions = { from: environment.smtp.email, to: 'some@email.com', subject: 'Subject', html: "Mail content here." }

smtpTransport.sendMail(mailOptions, function(error, response){ console.log(error) });

它抛出“缺少 "PLAIN" 的凭据”。我在应用程序的很多地方都使用过这个配置,现在到处都会抛出这个错误。但是当我第一次写代码时运行良好。

"nodemailer": "^4.0.1"

这是配置设置。 'host' 字段丢失,在 Nodemailer V3 及更高版本中似乎是强制性的。

https://nodemailer.com/smtp/

var smtpTransport = nodemailer.createTransport({ host: "smtp.zoho.com", service: "Zoho", port: 25, secure: false, auth: { user: 'some@email.com', pass: "123456" }, tls: { rejectUnauthorized: false } });

您可能缺少凭据。如果您从 .env 获取凭据,那么您可能需要使用 dotenv 库来获取它们。

var dotenv = require("dotenv")
dotenv.config()

var smtpTransport = nodemailer.createTransport({
    service: "Gmail",
    port: 465,
    auth: {
      user: process.env.GMAIL_USERNAME, 
      pass: process.env.GMAIL_PASSWORD, 
    },
  })

如果您使用远程服务来托管您的服务器,那么您可能想看看他们是否对 .env 变量有要求。某些服务(如 Vericel)会在启动服务器之前注入 .env 变量。