nodemailer sendEmail 不会在 Node.js 中等待

前往扎尔卡姆

当我向我的端点发出请求时,只有发送了电子邮件,我才需要得到成功的响应!否则,它应该抛出一个错误:

myendpoint.js

    router.post("/", upload.none(), async (req, res) => {
    try {
    let body = JSON.parse(req.body.contact);

    await getDb("messages").insertOne({
      name: body.name,
      email: body.email,
      phone: body.phone,
      subject: body.subject,
      message: body.message,
    });

    await sendEmail(body);

    res.send(
      JSON.stringify({
        success: true,
        msg: "Message has been sent successfully",
      })
    );
  } catch (err) {
    res.send(JSON.stringify({ success: false, msg: err }));
  }
});

发送电子邮件.js

    const sendEmail = async function (props) {
    const transporter = nodemailer.createTransport({
    service: process.env.EMAIL_SERVICE,
    host: process.env.EMAIL_HOST,
    auth: {
      user: process.env.EMAIL_FROM,
      pass: process.env.EMAIL_PASS,
    },
  });
  const mailOptions = {
    from: process.env.EMAIL_FROM,
    to: process.env.EMAIL_TO,
    name: props.name,
    email: props.email,
    phone: props.phone,
    subject: props.subject,
    text: props.message,
  };
  transporter.sendMail(mailOptions, function (error, info) {
    if (error) {
      throw new Error("Message did Not send!");
    }
  });
};

问题是在“等待 sendEmail(body);”之前 结束,我收到错误,我收到“消息已成功发送”,然后服务器崩溃!我错过了什么?

奥马尔·贝拉米 |

您好,您可以将 Transporter sendMail 更改为:

return await transporter.sendMail(mailOptions);

或者你可以使用承诺。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

JS:Async/await 似乎不会在循环中等待结果

await不在node.js中等待

await 关键字不会在 dart 中等待

以异步方式返回对象并在Node.js中等待

setTimeout 在 Node.js 中等待时间过长

如何在 node.js 中等待流式 sql 查询

JS - 在 forEach 中等待

期望JSON输出不会在node.js输出中返回

node.js不会在所有页面中加载CSS样式

事件不会在使用 Node js 和 socket.io 的客户端上触发

新选项卡不会在 puppeteer Node js 中打开

node.js nodemailer gmail错误

使用长HTML的Node.JS Nodemailer

Node.js群集模块不会在http.Server.close()上释放套接字/端口

如何在Node.js中等待所有异步任务完成?

如何在Node.js(JavaScript)中等待?我需要暂停一段时间

如何在node.js中等待带有异步请求的循环完成?

Node.js-不确定如何在函数中等待数据库查询

在JavaScript中等待异步调用在Node js中没有console.log

如何在 Node.js 中等待回调函数调用?

在Node中等待异步队列

异步操作不会在等待命令时停止

Flux不会在“ then”之前等待元素完成

等待不会在原始上下文中恢复

Node-Jasmine不会在预期时失败

Node js异步等待函数不会相互等待

Node.js和PassportJs:如果身份验证失败,则不会在passport.authenticate之后重定向中间件

参考或需要其他文件时,Visual Studio 2019中的Node JS应用的Mocha不会在测试资源管理器中显示测试

node.js nodemailer和nodemailer-sendinblue-transport无法发送电子邮件