From 80b4482c31fba193a6c73d6a4110e225c107e060 Mon Sep 17 00:00:00 2001 From: Ritchie Martori Date: Fri, 10 Jan 2014 10:45:26 -0800 Subject: [PATCH] Provide sane default for email connector transports --- lib/connectors/mail.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/connectors/mail.js b/lib/connectors/mail.js index 5f846ae3..f6ee201f 100644 --- a/lib/connectors/mail.js +++ b/lib/connectors/mail.js @@ -3,7 +3,8 @@ */ var mailer = require('nodemailer') - , assert = require('assert'); + , assert = require('assert') + , debug = require('debug'); /** * Export the MailConnector class. @@ -19,6 +20,7 @@ function MailConnector(settings) { assert(typeof settings === 'object', 'cannot initiaze MailConnector without a settings object'); var transports = settings.transports || []; this.transportsIndex = {}; + this.transports = transports; transports.forEach(this.setupTransport.bind(this)); } @@ -87,9 +89,8 @@ Mailer.send = function (options, fn) { var connector = dataSource.connector; var transportsIndex = connector.transportsIndex; var transport = transportsIndex[options.transport || 'SMTP'] || connector.transports[0]; - assert(transport, 'You must supply an Email.settings.transports array containing at least one transport'); - if(settings && settings.debug) { + if(debug.enabled || settings && settings.debug) { console.log('Sending Mail:'); if(options.transport) { console.log('\t TRANSPORT:', options.transport); @@ -101,7 +102,16 @@ Mailer.send = function (options, fn) { console.log('\t HTML:', options.html); } - transport.sendMail(options, fn); + if(transport) { + assert(transport.sendMail, 'You must supply an Email.settings.transports containing a valid transport'); + transport.sendMail(options, fn); + } else { + console.warn('Warning: No email transport specified for sending email.' + + ' Setup a transport to send mail messages.'); + process.nextTick(function() { + fn(null, options); + }); + } } /**