我试图在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)
任何帮助将不胜感激。
答案 0 :(得分:0)
获得404状态代码的原因是因为您忘记了null
之前的斜杠。它应该是api/form
。
另外,您没有返回响应。在发出您的代码正在等待的请求之后,这将导致响应超时。
app.post('/api/form')