2017-02-02 1 views
1

Bitte bare mit mir, wie ich ein Neuling zu Nodejs bin und versuche, es durch Bezugnahme auf einige Artikel zu lernen.NodeJS: Zeitplan E-Mail mit Agenda

Ich versuche, geschickt mit NodeMailer und Agenda eine E-Mail zu planen, aber ich sehe nichts mit dem Code unten geschieht in index.js:

var Agenda = require('agenda'); 
 
var agenda = new Agenda(); 
 
const nodemailer = require('nodemailer'); 
 

 
agenda.define('send email', {priority: 'high', concurrency: 10}, function(job, done) { 
 
    // create reusable transporter object using the default SMTP transport 
 
    let transporter = nodemailer.createTransport({ 
 
     service: 'gmail', 
 
     auth: { 
 
      user: '[email protected]', 
 
      pass: 'xxxx' 
 
     } 
 
    }); 
 

 
    // setup email data with unicode symbols 
 
    let mailOptions = { 
 
     from: '"Test" <[email protected]>', // sender address 
 
     to: '[email protected]', // list of receivers 
 
     subject: 'Hello ✔', // Subject line 
 
     text: 'Hello world ?', // plain text body 
 
     html: '<b>Hello world ?</b>' // html body 
 
     }; 
 

 
    // send mail with defined transport object 
 
    transporter.sendMail(mailOptions, function (error, response) { 
 
     console.log('Message sent: ' + response.message); 
 
     transporter.close(); 
 
     done(); 
 
    }); 
 
}); 
 

 
agenda.on('ready', function() { 
 
    agenda.every('5 seconds', 'send email'); 
 
    agenda.start(); 
 
}); 
 

 
agenda.on('start', function (job) { 
 
    console.log("Job %s starting", job.attrs.name); 
 
}); 
 

 
agenda.on('complete', function (job) { 
 
    console.log("Job %s finished", job.attrs.name); 
 
}); 
 

 
console.log('Wait 10 seconds...');

Als ich führen Sie den obigen Code mit node index.js, ich sehe die folgende Konsolenmeldung

Wait 10 seconds... 

Grundsätzlich versuche ich, die E-Mail-Funktionalität so zu planen, dass sie alle 5 Sekunden ausgeführt wird.

Wo mache ich mich falsch?

EDIT: Es scheint im Vergleich mit der Job-Implementierung zu sein:

agenda.every('5 seconds', jobName); 

ich den Job Objekt nach der Tat muß so aber, wenn es ein Weg gibt, dass den obigen Befehl ausgeführt wird, das würde zu bekommen eine akzeptable Antwort sein.

Antwort

0

Agenda ruft das Ereignis 'ready' auf, wenn die Mongo-Verbindung erfolgreich hergestellt wurde. Ich sehe nicht, dass Sie das aufstellen. Etwas wie:

var Agenda = require('agenda'); 
var mongoConnectionString = "mongodb://127.0.0.1/agenda"; 
var agenda = new Agenda({db: {address: mongoConnectionString}}); 
+0

ich nicht beziehe mich hier auf Mongo, nur SMTP-Server – Kanchana

+0

ignoriert meinen anderen Kommentar, ich dachte, dass ich in einer ganz anderen Frage. Die Agenda beruht auf Mongo. Dort speichert es alle seine Jobs. Wenn du also keinen Mongo aufstellst, werden sie nicht laufen. – user1427105

Verwandte Themen