我想在这里实现的是当我输入张贴路线时,我想在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即可工作。我也没有错误。
答案 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);