nodemailer
Version:
Easy to use module to send e-mails, supports unicode and SSL/TLS
52 lines (45 loc) • 1.57 kB
JavaScript
var spawn = require('child_process').spawn;
// Expose to the world
module.exports = SendmailTransport;
/**
* <p>Generates a Transport object for Sendmail</p>
*
* @constructor
* @param {String} [config] path to the sendmail command
*/
function SendmailTransport(config){
this.path = "sendmail";
this.args = false;
if(typeof config=="string") {
this.path = config;
} else if(typeof config=="object") {
if(config.path) {
this.path = config.path;
}
if(Array.isArray(config.args)) {
this.args = config.args;
}
}
}
/**
* <p>Spawns a <code>'sendmail -t'</code> command and streams the outgoing
* message to sendmail stdin. Return callback checks if the sendmail process
* ended with 0 (no error) or not.</p>
*
* @param {Object} emailMessage MailComposer object
* @param {Function} callback Callback function to run when the sending is completed
*/
SendmailTransport.prototype.sendMail = function(emailMessage, callback) {
var envelope = emailMessage.getEnvelope();
var args = this.args || ["-f"].concat(envelope.from).concat(envelope.to);
args.unshift("-i"); // force -i to keep single dots
var sendmail = spawn(this.path, args);
sendmail.on('exit', function (code) {
var msg = "Sendmail exited with "+code;
if(typeof callback == "function"){
callback(code?new Error(msg):null, {message: msg, messageId: emailMessage._messageId});
}
});
emailMessage.pipe(sendmail.stdin);
emailMessage.streamMessage();
};