/* ==== 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;