带有nodejs的Cronjob用于发送电子邮件

时间:2016-03-21 08:44:27

标签: node.js cron

Iam正在寻找节点时间调度程序,用于向用户发送电子邮件并找到此cronjob,但下面似乎无法正常工作,我的代码是函数调用API

我对节点js很新,任何人都可以帮我解决这个问题'在运行服务器时它没有进入'app.get'功能本身。

  var cron = require('cron');
  var cronJob = cron.job("0 */10 * * * *", function(){

  app.get('/email',function(req, res) {
  console.log("second")
  console.log(req.body.htmltag);
    db.collection('UserData', function(err, collection) {
      collection.find({},{email:1}).toArray(function(err, items) {
      res.send(items);

var transporter = nodemailer.createTransport('smtps://riyas.1012@gmail.com:aslihaabu@3734@smtp.gmail.com');

      for(i=0;i<items.length;i++)
{
var mailOptions = {
    from: ' <svatsan53@gmail.com>', // sender address
    to: items[i].email, // list of receivers
    subject: 'Hello ✔', // Subject line
    text: 'Hello world ', // plaintext body
    html:  req.body.htmltag // html body
};
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
            }
    console.log('Message sent: ' + info.response);
    })


        }
        });
    });
});
}); 
cronJob.start();

1 个答案:

答案 0 :(得分:0)

app.get('/email',function(req, res) {})

此代码定义为路由器/email
我认为你正在调用api /email,但这段代码错了

也许你应该这样做:

var request = require('request');

request.get('/email', function (err, res, body) {
  if (err || res.statusCode !== 200) {
    throw new Error('invalid url');
  }

  console.log(body);
  // send email here
});

尝试这样的cron代码:

var CronJob = require('cron').CronJob;
new CronJob('* * * * * *', function() {
  console.log('You will see this message every second');
}, null, true, 'America/Los_Angeles');

检查usage的cron模块

希望它可以提供帮助