【问题标题】:Next.JS and Nodemailer, Sending an email from contact formNext.JS 和 Nodemailer,从联系表单发送电子邮件
【发布时间】:2020-12-26 05:52:51
【问题描述】:

我在 next.js 中的联系表有问题,我没有任何错误(显示),一切正常,直到部署(在 Vercel 上)。我获取了我的表单,状态为 200,但我没有在 Gmail 上收到我的电子邮件。我也没有收到任何其他信息。 当我在“开发”和“构建”上测试我的应用程序时,我收到了电子邮件。 我在 Gmail 帐户中也有“不太安全的应用程序”选项。

这是我在 Next.JS 中的代码:

contact.js 中的获取方法:

 fetch("/api/contact", {
        method: "POST",
        headers: {
          Accept: "application/json, text/plain, */*",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          name: mailName,
          email: mailAddress,
          text: mailText,
        }),
      }).then((res) => {
        console.log("Fetch: ", res);
        res.status === 200
        ?
        router.push("/success")
          : router.push("/error");

在 api/contact.js 中

require("dotenv").config();
const nodemailer = require("nodemailer");

export default (req, res) => {

  const { name, email, text } = req.body;

  const transporter = nodemailer.createTransport({
    service: "gmail",
    auth: {
      user: process.env.EMAIL,
      pass: process.env.PASSWORD,
    },
  });

  const mailOption = {
    from: `${email}`,
    to: `${process.env.EMAIL}`,
    subject: `New mail from ${email}`,
    text: `
    ${name} wrote:
    ${text}
    `,
  };

  transporter.sendMail(mailOption, (err, data) => {
    if (err) {
      console.log(err);
    } else {
      console.log("mail send");
    }
  });

  console.log(name, email, text);
  res.send("success");
};

请帮忙

【问题讨论】:

  • 您找到解决方案了吗?我遇到了同样的问题,当每件事情在开发中都能正常工作但在生产中产生问题时,这令人沮丧

标签: javascript node.js gmail next.js nodemailer


【解决方案1】:

由于您的代码在本地而不是在部署环境中运行良好,我有两个建议。

首先,确保您已设置所有环境变量。

其次,您编写代码的方式总是会返回成功,因为transporter.sendMail 是异步的,而res.send 在它之外。

改变喜欢,

transporter.sendMail(mailOption, (err, data) => {
    if (err) {
      console.log(err);
      res.send("error" + JSON.stringify(err));
    } else {
      console.log("mail send");
      res.send("success");
    }
});

【讨论】:

  • 乐于助人.. :)
  • 谢谢。我只是遇到了同样的问题,这为我指明了正确的方向。
  • 非常感谢!
  • 非常感谢。同样的问题
猜你喜欢
  • 2017-09-27
  • 1970-01-01
  • 2020-05-20
  • 2019-09-30
  • 2020-09-30
  • 2016-03-02
  • 2016-04-17
  • 2019-09-04
  • 1970-01-01
相关资源
最近更新 更多