nodemailer 电子邮件未发送且未记录错误

nodemailer email not sent and no errors logged

我正在尝试使用 nodemailer 发送电子邮件,但它没有发送任何电子邮件,奇怪的是它也没有记录任何错误。

这是我的路线代码:

router.post("/form", async (req, res) => {
  try {
    let { name, email, password } = req.body;
    let user = await User.create({
      name,
      email,
      password,
    });

    if (!user) return res.status(501).send("Something went wrong");
    let token = await user.getSignedToken();
  

    try {
      user.emailToken = await user.verifyEmail();
    } catch (ex) {
      console.log(ex);
    }
    

    try {
      await user.save({ validateBeforeSave: false });
    } catch (ex) {
      console.log(ex);
    }
    
    const options = {
      expires: new Date(
        Date.now() + process.env.JWT_COOKIE_EXPIRE * 24 * 60 * 60 * 1000
      ),
    };

    var smtpTransport = nodemailer.createTransport({
      service: "Gmail",
      auth: {
        user: "myEmail",
        pass: "myPass",
      },
    });
    var mailOptions = {
      from: "myEmail",
      to: req.body.email,
      subject: "Verify Email Token",
      text: `go to the below link\nhttp://localhost:3000/verifyEmail/${emailToken}`,
    };

    smtpTransport.sendMail(mailOptions, function (error, info) {
      if (error) {
        console.log(error);
      } else {
        console.log("Email sent: " + info.response);
      }
    });
    
    res.cookie("token", token, options);
    res.send("Check email for activation");
  } catch (ex) {
    res.send(ex);
  }
});

所以,它没有发送任何电子邮件,之后,res.cookie 和 res.send 行也不起作用。但是,服务器没有记录任何 error/exceptions。那么,可能是什么问题?我在另一条路线中使用了 nodemailer(与此路线具有相同的 gmail 帐户)并且它正在运行。那么,这里的代码无法正常工作可能是什么问题?

在 mailoptions 对象中,您正在使用 emailToken 并且从未定义该变量。相反,您可能想使用 user.emailToken