首页 > 解决方案 > 节点 cron 10 分钟后发送邮件

问题描述

我想在这里实现的是当我进入 post 路线时,我想在 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);
            });
        });

PS我的代码在没有node-cron的情况下工作。我也没有错误。

标签: node.jscron

解决方案


这就是 cron 的工作原理。维基以获取更多阅读。TL; DR:正如你所说,它会在每次时间超过整点 10 分钟时发送邮件,而不仅仅是一次。

对于你想要的,你可以做一个简单的setTimeout()延迟 600000 (1000ms * 60sec * 10min)。

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


推荐阅读