diff --git a/bin/crontab-ui-mailer.js b/bin/crontab-ui-mailer.js index 1aa7c7b..e8263a6 100755 --- a/bin/crontab-ui-mailer.js +++ b/bin/crontab-ui-mailer.js @@ -5,7 +5,15 @@ var crontab = require("../crontab.js"); var nodemailer = require('nodemailer'); crontab.get_crontab(process.argv[process.argv.length -1 -2], function(job){ - if (job.mailing.transporterStr == 'sendmail') { // allow sending mail with Postfix + if (!job.mailing || job.mailing == undefined || job.mailing.mailOptions == undefined) { + var mailOptions = defaults.mailOptions; + var transporterStr = defaults.transporterStr; + } else { + var mailOptions = job.mailing.mailOptions; + var transporterStr = job.mailing.transporterStr ; + } + + if (transporterStr == 'sendmail') { // allow sending mail with Postfix, and this is the default option var transporter = nodemailer.createTransport({ sendmail: true, newline: 'unix', @@ -15,10 +23,21 @@ crontab.get_crontab(process.argv[process.argv.length -1 -2], function(job){ } else { var transporter = nodemailer.createTransport(job.mailing.transporterStr); } - var mailOptions = job.mailing.mailOptions; - mailOptions.subject = job.name + ' ' + mailOptions.subject; - mailOptions.text = 'Command: ' + job.command + "\n" + mailOptions.text; - mailOptions.html = 'Command: ' + job.command + '
' + mailOptions.html; + + const keywordsMap = { + '#COMMAND_NAME#': job.name, + '#COMMAND#': job.command, + '#HASHED_EMAIL#': Buffer.from(mailOptions.to).toString('base64') + }; + function replaceAll(str,mapObj){ + var re = new RegExp(Object.keys(mapObj).join("|"),"gi"); + return str.replace(re, function(matched){ + return mapObj[matched]; + }); + } + mailOptions.subject = replaceAll(mailOptions.subject, keywordsMap); + mailOptions.text = replaceAll(mailOptions.text, keywordsMap); + mailOptions.html = replaceAll(mailOptions.html, keywordsMap); mailOptions.attachments = [{filename: "stdout.txt", path: process.argv[process.argv.length -1 -1]}, {filename: "stderr.txt", path: process.argv[process.argv.length -1]}];