Mustache-Mailer

A mustache-template-backed mailer. Built with handlebars,
and nodemailer, inspired by ActionMailer.
Usage
- create a templates directory with the following naming convention:
foo.text.hbs, for text email templates.
foo.meta.hbs, meta information in JSON format, e.g., subject.
foo.html.hbs, for html email templates.
- instantiate
MustacheMailer with:
transport: the transport module you wish to use, e.g., SES.
templateDir: the path to the template directory.
var mm = new MustacheMailer({
transport: require('nodemailer-ses-transport')({
accessKeyId: 'AWSACCESSKEY',
secretAccessKey: 'AWS/Secret/key'
}),
templateDir: './mail-templates'
});
- use the
MessageMailer instance to grab a template:
- if it sees an
html template and a text template, both will be sent.
- any variable passed to
sendMail are sent to nodemailer, and
to the mustache templates.
var msg = mm.message('confirmation', function(err, msg) {
msg.sendMail({
to: 'bencoe@gmail.com',
name: 'Ben',
id: 'adfasdfadsfasdf'
});
}
tokenFacilitator Plugin
It often arises that you'd like to toss a token inside an email, e.g.,
click this confirmation link to change your password.
For generating these tokens, MustacheMailer allows you to install a
tokenFacilitator plugin:
When instantiating MustacheMailer:
var mm = new MustacheMailer({
transport: mock,
templateDir: path.resolve(__dirname, './fixtures'),
tokenFacilitator: {
generate: function(data, cb) {
setTimeout(function() {
data.email.should.eql('zeke@example.com');
data.name.should.eql('Zeke');
return cb(null, parseInt(Math.random() * 256));
}, 20);
}
}
});
In the template
http://example.com/{{{tokenHelper name=name email=email}}}
- the arguments will be stored as
key, value pairs in data.