Created
August 17, 2014 08:36
-
-
Save biggora/d0cea7278e73c0470373 to your computer and use it in GitHub Desktop.
Nodemail usage for TrinteJS framework
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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