Sendgrid перестал отправлять электронные письма через Expressjs - PullRequest
0 голосов
/ 30 мая 2019

Это очень странная проблема, но я не знаю, что не так с моим приложением. Я не вносил никаких изменений, но по какой-то причине приложение перестало отправлять электронные письма и показывает POST error: cannot find route api/example

У меня есть компонент React, в котором есть поле электронной почты и кнопка. При нажатии кнопка вызывает функцию:

sendMail() {
if (this.state.currentEmail !== "") {
  let lastAtPos = this.state.currentEmail.lastIndexOf("@");
  let lastDotPos = this.state.currentEmail.lastIndexOf(".");

  if (
    !(
      lastAtPos < lastDotPos &&
      lastAtPos > 0 &&
      this.state.currentEmail.indexOf("@@") === -1 &&
      lastDotPos > 2 &&
      this.state.currentEmail.length - lastDotPos > 2
    )
  ) {
    this.setState({ error: "Please, provide your real e-mail address!" });
  } else {
    this.setState({
      sending: true,
      buttonText: ""
    });

    let data = {
      email: this.state.currentEmail
    };

    axios
      .post("/api/subscribers", data)
      .then(res => {
        this.setState({ isSent: true }, this.resetForm());
      })
      .catch(() => {
        console.log("Message not sent");
      });
    }
  }
}

Маршрут ExpressJS:

router.post("/", (req, res) => {
    let data = req.body;

    let smtpTransport = nodemailer.createTransport({
      service: "Zoho",
      port: 465,
      auth: {
        user: creds.USER,
        pass: creds.PASS
      }
    });

    let mailOptions = {
      from: "EMAIL",
      to: "EMAIL",
      subject: "New user subscribed via DOMAIN",
      html: `<p>${data.email}</p>`
    };

    smtpTransport.sendMail(mailOptions, (error, response) => {
      if (error) {
        res.send(error);
        console.log(error);
      } else {
        res.send("Success");
      }
      smtpTransport.close();
    });

    const msg = {
      to: data.email,
      from: "DOMAIN <EMAIL>",
      templateId: "TEMPLATE ID",
      subject: "TEXT",
      text: "TEXT"
    };

    //Send Email
    try {
      sgMail.send(msg);
    } catch (err) {
      console.log(err);
    }
  });

Как я уже говорил, это нормально работало неделю назад, пока я не начал замечать, что электронные письма не отправляются. Я отладил, и все, что я получаю, это ошибка "Message not sent" от клиента и ошибка маршрута POST error cannot find api/example (и фрагмент кода HTML).

Что не так с кодом?

1 Ответ

0 голосов
/ 30 мая 2019

Причиной этого было то, что я включил двухфакторную аутентификацию для Zoho и не получал никакой ошибки из-за неудачной попытки входа в систему!Потраченные впустую часы, пока я не нашел причину ...

...