Add Nodemailer and node-mailer-templates to your
 package.json file:
 package.json
   "email-templates": "0.0.5",
   "nodemailer": "0.3.x",
Updated your dependencies
 npm install
Create config settings for nodemailer in your config.js file
 config.js
 'use strict';
 module.exports = {
   db: {
     production: "mongodb://user:pass@example.com:1234/stroeski-prod",
     development: "mongodb://localhost/storeski-dev",
     test: "mongodb://localhost/storeski-test",
   },
   mailer: {
     auth: {
       user: 'test@example.com',
       pass: 'secret',
     },
     defaultFromAddress: 'First Last <test@examle.com>'
   }
 };
Create a wrapper around the nodemailer module
 mailer/models.js
 'use strict';
 var config = require('../config');
 var nodemailer = require('nodemailer');
 var path = require('path');
 var templatesDir = path.resolve(__dirname, '..', 'views/mailer');
 var emailTemplates = require('email-templates');
 var EmailAddressRequiredError = new Error('email address required');
 // create a defaultTransport using gmail and authentication that are
 // stored in the `config.js` file.
 var defaultTransport = nodemailer.createTransport('SMTP', {
   service: 'Gmail',
   auth: {
     user: config.mailer.auth.user,
     pass: config.mailer.auth.pass
   }
 });
 exports.sendOne = function (templateName, locals, fn) {
   // make sure that we have an user email
   if (!locals.email) {
     return fn(EmailAddressRequiredError);
   }
   // make sure that we have a message
   if (!locals.subject) {
     return fn(EmailAddressRequiredError);
   }
   emailTemplates(templatesDir, function (err, template) {
     if (err) {
       //console.log(err);
       return fn(err);
     }
     // Send a single email
     template(templateName, locals, function (err, html, text) {
       if (err) {
         //console.log(err);
         return fn(err);
       }
       // if we are testing don't send out an email instead return
       // success and the html and txt strings for inspection
       if (process.env.NODE_ENV === 'test') {
         return fn(null, '250 2.0.0 OK 1350452502 s5sm19782310obo.10', html, text);
       }
       var transport = defaultTransport;
       transport.sendMail({
         from: config.mailer.defaultFromAddress,
         to: locals.email,
         subject: locals.subject,
         html: html,
         // generateTextFromHTML: true,
         text: text
       }, function (err, responseStatus) {
         if (err) {
           return fn(err);
         }
         return fn(null, responseStatus.message, html, text);
       });
     });
   });
 }
Write a test to test sending an password reset email
 test/mailer/models.js
 'use strict';
 // import the mongoose helper utilities
 var utils = require('../utils');
 var should = require('should');
 var mailer = require('../../mailer/models');
 describe('mailer: models', function () {
   describe('#sendOne()', function (done) {
     it('should render the password reset templates correctly', function (done) {
       var locals = {
         email: 'one@example.com',
         subject: 'Password reset',
         name: 'Forgetful User',
         resetUrl: 'http;//localhost:3000/password_rest/000000000001|afdaevdae353'
       };
       mailer.sendOne('password_reset', locals, function (err, responseStatus, html, text) {
         should.not.exist(err);
         responseStatus.should.include("OK");
         text.should.include("Please follow this link to reset your password " + locals.resetUrl);
         html.should.include("Please follow this link to reset your password <a href=\"" + locals.resetUrl + "\">" + locals.resetUrl + "</a>");
         done();
       });
     });
   });
 });
Create the templates:
 views/mailer/password_reset/text.ejs
 Please follow this link to reset your password <%= resetUrl %>
 views/mailer/password_reset/html.ejs
 Please follow this link to reset your password <a href="<%= resetUrl %>"><%= resetUrl %></a>
Test are now passing:
 ✔ 15 tests complete (395 ms)