Расписание электронной почты с использованием повестки дня
Я пытаюсь запланировать отправку электронной почты с использованием NodeMailer и Agenda, однако я не вижу, чтобы что-то происходило с приведенным ниже кодом в 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: 'xxxx@gmail.com',
pass: 'xxxx'
}
});
// setup email data with unicode symbols
let mailOptions = {
from: '"Test" <xxxx@gmail.com>', // sender address
to: 'xxxx@gmail.com', // 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...');
Когда я запускаю приведенный выше код с помощью node index.js
я вижу следующее консольное сообщение
Wait 10 seconds...
По сути, я пытаюсь запланировать функционирование электронной почты на каждые 5 секунд.
Где я делаю не так?
РЕДАКТИРОВАТЬ: Кажется, что с реализацией работы по сравнению с:
agenda.every('5 seconds', jobName);
Однако мне нужен объект задания после факта, поэтому, если есть способ получить это от запуска вышеуказанной команды, это будет приемлемым ответом.
1 ответ
Повестка дня вызывает событие "готово", когда она успешно устанавливает свое монго-соединение. Я не вижу, как ты это настраиваешь. Что-то вроде:
var Agenda = require('agenda');
var mongoConnectionString = "mongodb://127.0.0.1/agenda";
var agenda = new Agenda({db: {address: mongoConnectionString}});