5.0.0 • Published 8 years ago
mustache-mailer v5.0.0
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
MustacheMailerwith:
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
MessageMailerinstance to grab a template:
- if it sees an
htmltemplate and atexttemplate, both will be sent. - any variable passed to
sendMailare sent tonodemailer, 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'),
// a fake token facilitator.
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,valuepairs in data.
