节点cron在10分钟后发送邮件

时间:2019-02-28 15:16:23

标签: node.js cron

我想在这里实现的是当我输入张贴路线时,我想在10分钟后发送电子邮件。为此,我正在使用node-cron。但是此计划不会在10分钟后发送邮件。我相信这会在分钟本身为10分钟时设置,然后发送邮件吗?当我输入路线时,如何在10分钟后发送一次邮件,该如何实现?

        cron.schedule("10 * * * *", function(){
            const mailOptions = {
                from: 'example@gmail.com', // sender address
                to: 'example@gmail.com', // list of receivers
                subject: 'Test | ' + newadvertisement.manufacturer + ' ' + newadvertisement.brand, // Subject line
                html: '<p>Test
            };

            transporter.sendMail(mailOptions, function (err, info) {
                if (err)
                    console.log(err)
                else
                    console.log(info);
            });
        });

P.S我的代码无需node-cron即可工作。我也没有错误。

2 个答案:

答案 0 :(得分:0)

这是cron的工作方式。 wiki,以了解更多信息。 TL; DR:正如您所说,它将每次发送邮件,时间是每小时的10分钟,而不是一次。

对于您想要的内容,您可以执行一个简单的setTimeout(),延迟为600000(1000ms * 60sec * 10min)。

或者您可以使用agenda来控制它何时起作用。这需要某种数据库,但是它更加可靠,因为如果设置了超时后重新启动服务器,setTimeout()将无法工作。

答案 1 :(得分:0)

我相信现在每隔一分钟= 10,它就会每小时发送一次,直到永恒。

如果要为此使用cron,则需要设置一个值而不是那些星号:

cron.schedule("40 16 28 Feb Thu",

但是,如果是一次性操作,则可以使用超时。

setTimeout(sendEmail(),600000);