2016-03-21 6 views
0

Iam für Knoten Zeitplaner suchen E-Mail an Benutzer zu senden und diese Cronjobs gefunden, aber es scheint nicht unter Arbeit ist mein Code mit Aufruf der Funktion APICronjob mit NodeJS für E-Mail zu senden

sehr neu Iam js zum Knoten kann bitte helfen Sie mir dabei. "Beim Ausführen des Servers kommt es nicht in die Funktion" app.get "selbst.

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 + Event Hörer helfen könnte? Entfernen Sie diesen Ereignislistener für HTTP get. –

Antwort

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

wird dieser Code einen Router /email
ich denke, definiert man die api /email anrufen, aber dieser Code ist es falsch

vielleicht sollten Sie wie folgt vorgehen:

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

Versuchen Sie den Cron-Code wie folgt:

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

Prüfung der usage für cron module

es hoffen

+0

Ich kann E-Mail mit dem obigen Code senden, aber mein Problem ist, ich muss E-Mail-ID aus DB abrufen und E-Mail an alle Benutzer senden. Ich habe den von Ihnen angegebenen Code geändert, aber es funktioniert nicht. andere Ideen pls. – srivat1

+0

was willst du tun? App.get ('/ email', function (req, res) {...} ' –

+0

ich denke, du verbesserst deinen Code besser, extrahierst den 'send mail'-code, dann hast du den Einfach im Cron-Job programmieren, dann kann man gut damit umgehen –