我正在使用 Nodemailer 在我的无服务器 Next.js 项目中发送电子邮件,该项目部署在 Vercel 中,该项目在开发模式下完美运行。但我在生产中遇到了问题。没有返回错误,一切都与开发模式相同,只是我没有收到任何电子邮件。
我有另一个用 React 构建的项目,并部署在 Heroku 中,我以相同的方式发送电子邮件,并且它在开发和生产方面工作正常,所以我知道问题出在 Vercel 上。
是的,我在 Google 帐户中启用了“允许安全程度较低的应用程序”,并且是的,我启用了验证码。
我也读过这篇文章https://vercel.com/docs/solutions/email但它并没有真正让我明白在我的情况下我应该做什么。我可以看到这是 SMTP 的问题,但我不知道到底是什么。
有人遇到过这种问题吗?我怎样才能解决这个问题?
const transporter = nodemailer.createTransport({
host: "smtp.gmail.com",
port: 465,
auth: {
user: myEmail@gmail.com,
pass: myEmailPass
}
});
const mailOptions = {
from: `${req.body.name} ${req.body.email}`,
to: myEmail@gmail.com,
subject: `${req.body.subject}`,
text: `Text: ${req.body.text}`
}
transporter.sendMail(mailOptions, (err, res) => {
if(err) {
console.log(err);
} else {
console.log("success");
}
});
Run Code Online (Sandbox Code Playgroud)
更新
我更改为 SendGrid:创建了一个帐户,创建了一个 API 密钥,并像这样更改了代码(而不是上面的代码):
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
const msg = {
to: `myEmail@gmail.com`, …Run Code Online (Sandbox Code Playgroud)