Skip to content

Instantly share code, notes, and snippets.

@biggora
Created August 17, 2014 08:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save biggora/d0cea7278e73c0470373 to your computer and use it in GitHub Desktop.
Save biggora/d0cea7278e73c0470373 to your computer and use it in GitHub Desktop.
Nodemail usage for TrinteJS framework
/**
* Mail manager
*
*
* Created by init script
* App based on TrinteJS MVC framework
* TrinteJS homepage http://www.trintejs.com
**/
var nodemailer = require("nodemailer");
var config = require("../configuration");
var mailConf = config.mailer[process.env.NODE_ENV];
// Message object
var defaultMessage = {
// sender info
from: 'Sender Name <sender@example.com>',
// Comma separated list of recipients
to: '"Receiver Name" <nodemailer@example.com>',
// Subject of the message
subject: 'TrinteJS is unicode friendly',
headers: {
'X-Laziness-level': 1000
},
// plaintext body
text: '',
// HTML body
html: '',
// An array of attachments
attachments: []
};
exports.createTransport = function createTransport(transport, mailConfig) {
transport = transport ? transport : mailConf.transport;
mailConfig = mailConfig ? mailConfig : mailConf.config;
// Create a transport object
return nodemailer.createTransport(transport, mailConfig);
};
exports.sendMail = function sendMail(message, callback, transport) {
var close = transport ? false : true;
transport = transport ? transport : exports.createTransport();
transport.sendMail(message, function(error) {
if (error) {
console.log(error.message);
return callback && callback(error.message);
}
if (close) {
transport.close();
}
return callback && callback(null);
});
};
exports.mailSender = function mailSender() {
return function(req, res, next) {
var recMessage = req.body.message, message;
if (recMessage) {
message = MergeRecursive({}, defaultMessage);
message = MergeRecursive(message, recMessage);
// Create a transport object
var locTransport = nodemailer.createTransport(mailConf.transport, mailConf.config);
locTransport.sendMail(message, function(error) {
if (error) {
console.log('Error occured');
console.log(error.message);
return res.send(error);
}
console.log('Message sent successfully!');
// close the connection pool
locTransport.close();
// if you don't want to use this transport object anymore, uncomment following line
return res.send('Message sent successfully!');
});
} else {
return res.send('Invalid message!');
}
};
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment