%PDF- %PDF-
Direktori : /home/opti/workflow/node_modules/express-mailer/node_modules/nodemailer/lib/ |
Current File : /home/opti/workflow/node_modules/express-mailer/node_modules/nodemailer/lib/transport.js |
"use strict"; var SendmailTransport = require("./engines/sendmail"), SMTPTransport = require("./engines/smtp"), SESTransport = require("./engines/ses"), StubTransport = require("./engines/stub"), DirectTransport = require("./engines/direct"), PickupTransport = require("./engines/pickup"); // Expose to the world module.exports.Transport = Transport; /** * Hash of available transports (uppercase) and their constructor methods */ Transport.transports = { "SMTP": SMTPTransport, "SES": SESTransport, "SENDMAIL": SendmailTransport, "STUB": StubTransport, "DIRECT": DirectTransport, "PICKUP": PickupTransport }; /** * <p>Generates a Transport object that can be used to deliver e-mail.</p> * * <p>All transport objects need to have <code>sendMail</code> property defined * and if needed, also an <code>close</code> method</p> * * @constructor * @param {String|Function} type The type of the transport, currently available: SMTP, SES and Sendmail */ function Transport(type, options){ var Constructor; this.options = options || {}; if(typeof type == "function"){ this.transportType = (type.name || "CUSTOM").toString().toUpperCase().trim(); Constructor = type; }else{ this.transportType = (type || "direct").toString().trim().toUpperCase(); this.dkimOptions = false; if(!(this.transportType in Transport.transports) && this.transportType.toLowerCase() in SMTPTransport.wellKnownHosts){ this.options.service = this.transportType; this.transportType = SMTPTransport.wellKnownHosts[this.transportType.toLowerCase()].transport; } Constructor = Transport.transports[this.transportType]; } if(Constructor){ this.transport = new Constructor(this.options); this.version = this.transport.version || false; }else{ this.transport = false; } } /** * <p>Forwards the generated mailcomposer object to the selected transport * object for message delivery</p> * * @param {Object} emailMessage MailComposer object * @param {Function} callback Callback function to run when the sending is completed */ Transport.prototype.sendMailWithTransport = function(emailMessage, callback){ if(!this.transport){ return callback(new Error("Invalid transport method defined")); } if(this.dkimOptions){ emailMessage.useDKIM(this.dkimOptions); } this.transport.sendMail(emailMessage, callback); }; /** * <p>Sets up DKIM signing for this transport object</p> * * @param {Object} dkim DKIM options */ Transport.prototype.useDKIM = function(dkim){ this.dkimOptions = dkim; }; /** * <p>Closes the transport when needed, useful with SMTP (which uses connection * pool) but not so much with SES or Sendmail</p> * * @param {Function} Callback function to run when the connection is closed */ Transport.prototype.close = function(callback){ if(!this.transport){ return callback(new Error("Invalid transport method defined")); } if(typeof this.transport.close == "function"){ this.transport.close(callback); }else{ if(typeof callback == "function"){ callback(null); } } };