我正在尝试设置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);
};
我想明白了,虽然这更像是一个变通的办法。很明显,dotenv文件中设置的变量在那里不起作用。我修改了我的npm命令以包含这些变量,然后它就能正常工作了。
PWD=password node index.js
我可以在不提交到本地的情况下设置这些变量,所以我可以暂时接受这个解决方案。不过还是不知道为什么dotenv变量不被接受。