发送电子邮件成功.但得到了503座雕像.Heroku、NodeJS、Nodemailer



我从react应用程序发送电子邮件时遇到问题。我在HEROKU上部署了nodeJS中的BE。对于发送电子邮件,我使用Nodemailer。关键是一切都很好。电子邮件已发送并交付。但我不知道为什么我会得到503状态码。

我读了heroku的纪录片,里面说原因是它可以是无限循环。但我想我这里没有无限循环。

谢谢你的任何帮助。

这是我的代码:

const express = require("express");
const nodemailer = require("nodemailer");
const cors = require("cors");
const bodyParser = require("body-parser");
const app = express();
app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post("/send", async (req, res) => {
console.log("req: ", req.body);
const output = `
<p>You have a new contact request</p>
<h3>Contact Details</h3>
<ul>  
<li>Name: ${req.body.firstName}</li>
<li>Email: ${req.body.email}</li>
<li>Phone: ${req.body.phoneNumber}</li>
<li>Created: ${req.body.createdAt}</li>
</ul>
<h3>Message</h3>
<p>Hi there</p>
`;

let transporter = nodemailer.createTransport({
host: process.env.MAIL_HOST,
port: process.env.MAIL_PORT,
secure: true, // true for 465, false for other ports
auth: {
user: process.env.MAIL_USER, 
pass: process.env.MAIL_PASSWORD, 
},
});
// send mail with defined transport object
try {
await transporter.sendMail({
from: "test@test.sk", 
to: "info@test.sk", 
subject: "Hello ✔", 
text: "Hello world?", 
html: output, 
});
console.log("Objednávka bola úspešne odoslaná");
return res;
} catch (error) {
console.log("error: ", error);
return error;
}
});
const port = process.env.PORT || 3001;
app.listen(port, () => console.log("Server started"));

您没有从POST处理程序发回任何响应,而是返回reserror,这两种方法在Express中都没有任何作用,这意味着请求永远不会正确结束。

相反,发送一个适当的响应来结束请求:

return res.end();             // for a normal situation
return res.status(400).end(); // for an error situation

如果你想发回一些文本,或者在你的应用程序中设置另一个更合适的状态码,这取决于你。

最新更新