Электронная почта nodemailer не отправлена, и ошибки не зарегистрированы - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь использовать 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.cook ie и строка res.send также не работают. Но сервер не регистрирует никаких ошибок / исключений. Итак, в чем может быть проблема? Я использовал nodemailer в другом маршруте (с той же учетной записью gmail, что и этот), и он работал. Итак, в чем может быть проблема, что код здесь не работает?

1 Ответ

1 голос
/ 05 августа 2020

В объекте mailoptions вы используете emailToken , и эта переменная никогда не определяется. Вместо этого вы можете использовать user.emailToken

...