UNPKG

email-reminder

Version:

A simple node utility to send email reminders

101 lines (100 loc) 3.07 kB
var transporter, reminder, self; function sendReminder(time, from, to, message){ reminder = setTimeout(function(){ var options = { from: from, to: to, subject: 'Reminder', html: "Hi,<br/>This is a gentle reminder for you to: <b>"+message+"</b><br/><br/>Thanks!" }; self.transporter.sendMail(options, function(error, info){ if(error){ console.log(error); }else{ console.log('Reminder sent: ' + info.response); } }); },time); return reminder; }; function sendRecurringReminder(time, from, to, message){ reminder = setInterval(function(){ var options = { from: from, to: to, subject: 'Reminder', html: "Hi,<br/>This is a gentle reminder for you to: <b>"+message+"</b><br/><br/>Thanks!" }; self.transporter.sendMail(options, function(error, info){ if(error){ console.log(error); }else{ console.log('Reminder sent: ' + info.response); } }); },time); return reminder; }; module.exports = { setMailTransporter : function(mailTransporter){ this.transporter = mailTransporter; self = this; }, after : function(input, from, to, message) { console.log('Reminder email will be sent in '+input); var unit = input.split(" ")[1]; switch(unit){ case 'minutes': var minutes = input.split(" ")[0]; return sendReminder(minutes*60000, from, to, message); break; case 'hour': var hours = input.split(" ")[0]; return sendReminder(hours*3600000, from, to, message); break; default: console.log('Please provide a valid input!'); } }, at : function(input, from, to, message){ var hours = input.split(":")[0]; var min = input.split(":")[1]; var seconds = input.split(":")[2]; var remindertime = (hours*3600000)+(min*60000)+(seconds*1000); var presenttimehour = new Date().getHours(); var presenttimemin = new Date().getMinutes(); var presenttimesec = new Date().getSeconds(); var presenttime = (presenttimehour*3600000)+(presenttimemin*60000)+(presenttimesec*1000); var diff = remindertime - presenttime; if(remindertime>presenttime){ console.log('Reminder email will be sent at '+input); return sendReminder(diff, from, to, message); }else{ console.log('Please provide a valid input!'); } }, every : function(input, from, to, message){ console.log('Reminder email will be sent every '+input); var unit = input.split(" ")[1]; switch(unit){ case 'minutes': var minutes = input.split(" ")[0]; return sendRecurringReminder(minutes*60000, from, to, message); break; case 'hour': var hours = input.split(" ")[0]; return sendRecurringReminder(hours*3600000, from, to, message); break; default: console.log('Please provide a valid input!'); } }, cancel : function(reminderId){ clearTimeout(reminderId); console.log('Reminder cancelled!'); }, cancelRecurring : function(reminderId){ clearInterval(reminderId); console.log('Recurring reminder cancelled!'); } };