# Direct SMTP transport module for Nodemailer Applies for Nodemailer v1.x and not for v0.x where transports are built-in. ## Usage Install with npm npm install nodemailer-direct-transport Require to your script ```javascript var nodemailer = require('nodemailer'); var directTransport = require('nodemailer-direct-transport'); ``` Create a Nodemailer transport object ```javascript var transporter = nodemailer.createTransport(directTransport(options)) ``` Where * **options** defines connection data * **options.name** hostname to be used when introducing the client to the MX server * **options.debug** if true, the connection emits all traffic between client and server as 'log' events **Example** ```javascript var transport = nodemailer.createTransport(directTransport()); ``` ## send callback Send callback includes the following arguments * **error** if the mail was not sent * **error.errors** is an array of error responses (one response for one MX exchange) * **error.errors[].recipients** an array of failed recipients * **error.errors[].response** Error response from the SMTP server * **info** if at least one mail was sent or is pending * **info.accepted** an array of recipients that were accepted * **info.rejected** an array of recipients that were rejected * **info.pending** an arrray of pending recipient objects (messages that were not rejected permanently and are retried later) * **info.pending[].recipients** an array of recipient addresses that are still pending * **info.pending[].response** Response from the SMTP server * **info.errors** An array of errors (for these exhanges that rejected mail) ## Issues Direct transport is very inefficient as it queues all e-mails to be sent into memory. Additionally, if a message is not yet sent and the process is closed, all data about queued messages is lost. Thus direct transport is only suitable for low throughput systems, where the message can be processed immediatelly. While not being 100% reliable (remember - if process exits, entire queue is lost), direct transport can still handle sending errors, graylisting and such. If a message can not be sent, it is requeued and retried later. ## License **MIT**