【发布时间】:2022-01-17 18:47:06
【问题描述】:
我对表达方式很陌生,我想我正在努力解决一些不那么难的事情......
我有一个函数 sendEmail
exports.sendEmail = async (req, res) => {
const transport = nodemailer.createTransport({
host: process.env.MAIL_HOST,
port: process.env.MAIL_PORT,
secure: false,
auth: {
user: process.env.MAIL_USER,
pass: process.env.MAIL_PASSWORD,
},
tls: {
rejectUnauthorized: false,
},
});
await transport.sendMail(
{ body },
(err, info) => {
console.log(err);
console.log(info);
// here is a problem
if (err) {
res.status(200).json({ msg: 'error' });
throw err;
} else {
res.status(200).json({ msg: 'mesage
has been sent' });
}
);
此功能工作正常 - 发送电子邮件。但我想要实现的是向浏览器发送信息,信息为“已发送”或“错误”。
在前端我有这个代码:
await axios.all([
axios.post(`${process.env.REACT_APP_DOMAIN}/api/send-email`, {
data,
}),
axios
.get(`${process.env.REACT_APP_DOMAIN}/api/send-email`)
.then((res) => {
console.log(res);
}),
]);
axios.post 工作正常,但 axios.get 不是。我得到的响应不包含我想要的数据。
谁能解释我在发送电子邮件后如何发送我需要的数据?
谢谢。
【问题讨论】:
-
您可以像这样使用 try catch 块向您的客户端发送数据。当您发送发布请求时,您将收到信息或错误。尝试{ const info = await transport.sendMail({ body }); res.send(信息); }catch(error){ res.status(500).send(error.message) }
-
@MithatErcan 感谢您的回答。我已经尝试过了,但仍然没有。也许我在 axios 调用中做错了什么?我在互联网上搜索并找到了有关 res.locals 和中间件的信息,但在这种方法中我收到 undefind :/
标签: javascript express axios nodemailer