node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org ยป



It is simple mailer for compound.js project. It based on nademailer and swig-email-templates npms.


  • Uses swig, which supports Django-inspired template inheritance.
  • Uses juice, which takes an HTML file and inlines all the <link rel="stylesheet">s and the <style>s.
  • Uses swig-dummy-context which gives you the ability to generate dummy context from a template to aid in an email preview tool.
  • URL rewrite support - you can provide a urlRewriteFn argument to rewrite your links.


Put the following dependence to your package.json file

"co-juice-mailer":     "latest"

Add this package to "/config/autoload.js" file

And run:

npm install -l

Place "mailer.yml" to your application "config" folder:

  mailer: smtp
  url: "http://localhost:8888"
  from: ""
  host: ""
  port: 587
  use_authentication: true
  user: ""
  pass: "password"

  mailer: smtp
  url: ""
  from: ""
  host: ""
  port: 587
  use_authentication: true
  user: ""
  pass: "password"

  mailer: test
  url: "http://localhost:8888"
  from: ""


Put you email views into the app/views/ directory with following naming style:


When you want to send email, just call

callback = function(err, success){
    if( success ){
        console.log('email was sent')
    } else {
        console.log('Error: ' + err)
compound.mailer.send( 'relative_path/templatename', {name: 'my var for template context'},
    {subject: 'Email subject', email: '', from: 'me@home'}, callback)

Controller have sendEmail method with the same signature.

The following variables will be available in the email template context:

  • url - from your config file
  • pathTo - compoundjs helper to use named routes

Besides, default value for "from" option can be configured via "mailer.yml" file too.

Swig filters

If you want to use your own swig filters - put it to "/app/swig/filters.js" file (or "/app/swig/")

See Swig Variable Filters




Contributors are welcome