A plugin for nodemailer that uses mjml and mustache view engine to generate emails.
npm install nodemailer-mjml-mustache --save
viewPath
(required) provides the path to the directory where your views are
template
the name of the template file to use without the extensioncontext
this will be passed to the view engine as the context data to render the variables with.
// example
context: {
name: `Bob Ross`,
url: `https://mjml.io/try-it-live`,
}
<!-- MJML Example-->
<mj-text>Hello {{name}}, <a href="{{url}}">Click here</a></mj-text>
let nodemailer = require(`nodemailer`)
let mjml = require(`../lib`)
let htmlToText = require(`nodemailer-html-to-text`).htmlToText
// Setup local version of mailcatcher
let transporter = nodemailer.createTransport({
host: '127.0.0.1',
port: 1025,
})
// Compile the mjml template to html with parsing the mustache variables
transporter.use(`compile`, mjml({
viewPath: `${__dirname}/views`
}))
// Convert the html to text to populate the text email part
transporter.use(`compile`, htmlToText())
// Setup test send options
const options = {
context: {
name: `Bob Ross`,
url: `https://mjml.io/try-it-live`,
},
from: `[email protected]`,
to: `[email protected]`,
subject: `Verify your email address`,
template: `example`,
}
console.log("Sending options", options)
// Send the email
new Promise((resolve, reject) => {
transporter.sendMail(options, function(error, info){
if (error) {
return reject(error)
}
resolve(info)
})
})