45 lines
1.7 KiB
JavaScript
45 lines
1.7 KiB
JavaScript
/* ==== MODULE ============================================================== */
|
|
var polymail = require.main.exports;
|
|
var newsletter = new polymail.Newsletter(require('./config.json'));
|
|
/* ==== REQUIRES ============================================================ */
|
|
var fs = require('fs');
|
|
var nodemailer = require('nodemailer');
|
|
var smtpPool = require('nodemailer-smtp-pool');
|
|
|
|
var doT = require('dot');
|
|
var md = require('markdown-it')({
|
|
typographer: true
|
|
});
|
|
md.use(require('markdown-it-header-sections'));
|
|
|
|
/* ==== NEWSLETTER ========================================================== */
|
|
// our custom build step
|
|
newsletter.build = function(file, options, cb) {
|
|
// clear potential old newsletter
|
|
newsletter.temp = {};
|
|
// merge passed options with newsletter defaults
|
|
var opts = polymail.mergeObjects(newsletter.options, options);
|
|
// read our provided content file
|
|
var content = fs.readFileSync(file);
|
|
opts.content = content;
|
|
// read our markdown template and build it
|
|
var md_source = fs.readFileSync(__dirname+'/templates/md.dot');
|
|
var md_template = doT.template(md_source);
|
|
var md_result = md_template(opts);
|
|
// convert our content md into html
|
|
opts.content = md.render(opts.content.toString());
|
|
// read our html template and build it
|
|
var html_source = fs.readFileSync(__dirname+'/templates/html.dot');
|
|
var html_template = doT.template(html_source);
|
|
var html_result = html_template(opts);
|
|
// set our temporary mail objects
|
|
newsletter.temp.subject = opts.heading + (opts.title ? ' '+opts.title : '');
|
|
newsletter.temp.text = md_result;
|
|
newsletter.temp.html = html_result;
|
|
};
|
|
|
|
// create our transport
|
|
newsletter.transport = nodemailer.createTransport(smtpPool(newsletter.transport_options));
|
|
|
|
module.exports = newsletter;
|