使用Nodemailer在React和Express中发出发布请求时出现问题

时间:2018-12-11 21:47:29

标签: node.js reactjs express nodemailer

我试图在express / reactjs堆栈中使用nodemailer,但是我遇到了一些问题。

在reactjs组件中,我有:

handleSubmit = async e => {
    console.log(e);
    e.preventDefault();
    await axios
      .post("http://localhost:5000/api/form", {
        firstName: "Name",
        lastName: "Lname"
      })
      .then(function(response) {
        console.log(response);
      })
      .catch(function(error) {
        console.log(error);
      });
  };

然后在服务器端:

app.post("api/form", (req, res) => {
  let transporter = nodemailer.createTransport({
    host: "smtp.ethereal.email",
    port: 587,
    auth: {
      user: "user",
      pass: "pass"
    }
  });

  let mailOptions = {
    from: "test@test.com",
    to: "mail@ethereal.email",
    replyTo: "test@test.com",
    subject: "New msg",
    text: "Hi",
    html: "<p>Just an email</p>"
  };

  transporter.sendMail(mailOptions, (err, info) => {
    if (err) {
      return console.log(err);
    }
    console.log("message sent: ", info.msg);
  });
});

服务器正在运行

const port = process.env.PORT || 5000;
app.listen(port, () => console.log(`server in port: ${port}`));

我在控制台中的错误是

POST http://localhost:5000/api/form 404 (Not Found)

和控制台错误

Error: Request failed with status code 404
    at createError (createError.js:17)
    at settle (settle.js:19)
    at XMLHttpRequest.handleLoad (xhr.js:78)

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

获得404状态代码的原因是因为您忘记了null之前的斜杠。它应该是api/form

另外,您没有返回响应。在发出您的代码正在等待的请求之后,这将导致响应超时。

app.post('/api/form')