我希望在客户填写预约表格后发送确认电子邮件。建议我使用“重新发送”。我在表单所在的位置开发了一个 React 扩展,并且还在后端使用 Express 开发了一个 POST 方法来发送电子邮件。
当我尝试在 Postman 中测试它时,问题出现了,结果出现 404 错误。我搜索了一些论坛,他们建议检查路由是否正确或者服务器是否正在运行(我已经验证了两者并且它们是正确的)。我想不出还有什么地方可能会出现错误。
下面是
server.js
方法所在的 POST
文件中的代码。 RESEND_FROM_EMAIL
和 RESEND_API_KEY
是 .env
文件中的环境变量(它们配置正确)。
const express = require('express');
const bodyParser = require('body-parser');
require('dotenv').config();
const axios = require('axios');
const app = express();
const PORT = process.env.PORT || 3003;
app.use(bodyParser.json());
app.post('/send-email', async (req, res) => {
const { to, subject, html } = req.body;
try {
const response = await axios.post('https://api.resend.com/emails', {
from: process.env.RESEND_FROM_EMAIL,
to,
subject,
html,
}, {
headers: {
'Authorization': `Bearer ${process.env.RESEND_API_KEY}`,
'Content-Type': 'application/json'
}
});
if (response.status === 200) {
res.status(200).json({ message: 'Email sent successfully' });
} else {
res.status(response.status).json({ message: 'Failed to send email' });
}
} catch (error) {
console.error('Error sending email:', error);
res.status(500).json({ message: 'Internal server error' });
}
});
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
在 Postman 中,我使用
POST
方法,路线如下:http://localhost:3003/send-email
,这是正文 (JSON):
{
"to": "[email protected]",
"subject": "Prueba Email",
"html": "<h1>Esto es un Email</h1>"
}
我得到的结果是这样的:
状态:404未找到
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /send-email%0A</pre>
</body>
</html>
并且在测试结果中,五次不及格。
FAIL
Response has the required fields | AssertionError: expected a{ …(7) } to have property 'content-type'
从响应消息的这部分来看:
/send-email%0A
URL 似乎有尾随空格。
检查Postman中的URL字段,看看它的末尾是否有一个点。