首页 > 解决方案 > Node.js 在尝试发送电子邮件时挂起

问题描述

我目前正在使用 nodemailer 发送自动电子邮件,最终将成为支持票。当我发送几封电子邮件时它很好,但是当我在前端坐了几分钟后尝试发送电子邮件时,服务器就会挂起。

    var ticket = {
        name: req.body.name,
        email: req.body.email,
        comment: req.body.comment
    }

    await SupportTicket.create(ticket)
        .then((result) => {
            console.log(result);

            transporter.sendMail(mailOptions, function(err, info) {
                if (err)
                    console.log(err)
                else
                {
                    console.log('Email sent');
                    res.status(200).json(result);
                }
                
            });
        })
        .catch((err) => {
            console.log(err);
            res.status(400).json(err);
            return;
        })

这就是我从前端发送票证数据的方式

    const message = {
        name: this.state.name,
        email: this.state.email,
        comment: this.state.comment,
    };

    await axios.post('/todos/support', message, {validateStatus: false})
        .then((res) => {
            console.log(res);
            if (res.status == 200)
            {
                console.log("Message was sent from supprt form");
            }
            else if (res.status == 400)
            {
                console.log("Message failed to send from support form");
            }
        });

发生的情况是,当我尝试继续发送电子邮件时,我没有收到来自服务器的响应。我要做的是填写一份支持表格,提交几次,然后等待几分钟,然后再次提交一份支持表格。前几次会起作用,但是当我等待几分钟提交表单时,它会挂起。只有当我在命令提示符下按下一个键时,电子邮件才会发送。当我最终在命令提示符下按下一个键时,所有 SupportTicket.create console.logs 都会显示出来,并且会发送电子邮件。我试图弄清楚如何防止服务器挂起。如果有人知道导致 node.js 服务器冻结的原因,请告诉我。

标签: node.jsreactjsexpresssequelize.jsnodemailer

解决方案


推荐阅读