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.