小编Dan*_*scu的帖子

vercel 中的 Nodemailer 不在生产中发送电子邮件

我正在使用 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)

sendgrid nodemailer next.js vercel

17
推荐指数
3
解决办法
2万
查看次数

标签 统计

next.js ×1

nodemailer ×1

sendgrid ×1

vercel ×1