2016-03-21 9 views
0

göndermek için nodejs ile cronjob, ancak aşağıda çalışmıyor görünüyor fonksiyonu çağıran APIIam kullanıcılara e-posta göndermek için düğüm zaman zamanlayıcı arayan ve bu cronjob bulundu email

Iam js düğüm çok yeni, can ile benim kodudur Herhangi biri lütfen bana bununla yardımcı olun 'Sunucuyu çalıştırırken' app.get 'işlevinin kendisine girmiyor.

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://[email protected]:[email protected]@smtp.gmail.com'); 

     for(i=0;i<items.length;i++) 
{ 
var mailOptions = { 
    from: ' <[email protected]>', // 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(); 
+0

Cron Job + Olay dinleyici yardımcı olabilir umut cron modülü için usage? HTTP almak için o olay dinleyicisini kaldırın. –

cevap

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

bu kod bir yönlendirici /email
i api /email aradığınız düşünüyorum, ama bu kod bunun yanlış tanımlanır belki

böyle yapmalısınız:

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 
}); 

Aşağıdaki gibi cron kodunu deneyin:

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

onay

o

+0

Yukarıdaki kodla posta gönderebilirim ancak sorunum e-posta kimliğini DB'den almalı ve tüm kullanıcılara posta göndermem gerekir. Sizin tarafınızdan verilen kodu değiştirdim ama çalışmıyor. başka herhangi bir fikir pls. – srivat1

+0

app.get ('/ email', işlev (req, res) {...} ' –

+0

üzerinde ne yapmak istiyorsunuz? Kodunuzu daha iyi refactor, 'posta gönder' kodunu ayıkladığınızı düşünüyorum. sadece cron işinde kodlayın, o zaman iyi idare edebilirsiniz –