当使用envariabele作为密码时,缺少 "PLAIN "错误的凭证。

问题描述 投票:0回答:1

我正在尝试设置nodemail,但遇到了一个奇怪的问题,我无法理解。每当我以字符串的方式填写凭证时,一切都很正常(当然我不希望这样)。如果我开始使用env变量,那么我就会得到以下错误信息。

UnhandledPromiseRejectionWarning: Error: Missing credentials for "PLAIN"

它正在使用一个gmail账户来发送邮件。该账户启用了不安全账户的旁路功能。当我添加 console.log() 语句时,密码清晰可见。有谁知道为什么会发生这种情况,以及如何解决这个问题。下面你会发现一个发送电子邮件的代码片段。

import nodemailer from 'nodemailer';

const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: '[email protected]',
    pass: process.env.PWD,
  },
});

export const sendUserCreateEmail = (to, firstName) => {
  const mailOptions = {
    from: 'someone',
    to: to,
    subject: 'It works',
    html: `
      <p>It works!</p>
    `,
  };

  return transporter.sendMail(mailOptions);
};
javascript node.js nodemailer
1个回答
0
投票

我想明白了,虽然这更像是一个变通的办法。很明显,dotenv文件中设置的变量在那里不起作用。我修改了我的npm命令以包含这些变量,然后它就能正常工作了。

PWD=password node index.js

我可以在不提交到本地的情况下设置这些变量,所以我可以暂时接受这个解决方案。不过还是不知道为什么dotenv变量不被接受。

© www.soinside.com 2019 - 2024. All rights reserved.