Socket
Socket
Sign inDemoInstall

nodemailer-smtp-pool

Package Overview
Dependencies
5
Maintainers
1
Versions
40
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.1.0 to 2.2.0

98

lib/pool-resource.js
'use strict';
var SMTPConnection = require('smtp-connection');
var clone = require('clone');
var EventEmitter = require('events').EventEmitter;

@@ -37,52 +37,64 @@ var util = require('util');

PoolResource.prototype.connect = function (callback) {
var returned = false;
if (!this.connection) {
this.connection = new SMTPConnection(this.options);
}
this.connection.once('error', function (err) {
this.emit('error', err);
if (returned) {
return;
this.pool.getSocket(this.options, function (err, socketOptions) {
if (err) {
return callback(err);
}
returned = true;
return callback(err);
}.bind(this));
this.connection.once('end', function () {
this.close();
if (returned) {
return;
var returned = false;
var options = this.options;
if (socketOptions && socketOptions.connection) {
this.logger.info('Using proxied socket from %s:%s', socketOptions.connection.remoteAddress, socketOptions.connection.remotePort);
options = clone(options);
Object.keys(socketOptions).forEach(function (key) {
options[key] = socketOptions[key];
});
}
returned = true;
return callback();
}.bind(this));
this.connection.connect(function () {
if (returned) {
return;
}
this.connection = new SMTPConnection(options);
if (this.options.auth) {
this.connection.login(this.options.auth, function (err) {
if (returned) {
return;
}
returned = true;
this.connection.once('error', function (err) {
this.emit('error', err);
if (returned) {
return;
}
returned = true;
return callback(err);
}.bind(this));
if (err) {
this.connection.close();
this.emit('error', err);
return callback(err);
}
this.connection.once('end', function () {
this.close();
if (returned) {
return;
}
returned = true;
return callback();
}.bind(this));
this.connection.connect(function () {
if (returned) {
return;
}
if (this.options.auth) {
this.connection.login(this.options.auth, function (err) {
if (returned) {
return;
}
returned = true;
if (err) {
this.connection.close();
this.emit('error', err);
return callback(err);
}
this._connected = true;
callback(null, true);
}.bind(this));
} else {
returned = true;
this._connected = true;
callback(null, true);
}.bind(this));
} else {
returned = true;
this._connected = true;
return callback(null, true);
}
return callback(null, true);
}
}.bind(this));
}.bind(this));

@@ -89,0 +101,0 @@ };

@@ -34,2 +34,6 @@ 'use strict';

if (options && typeof options.getSocket === 'function') {
this.getSocket = options.getSocket;
}
this.options = options && clone(options) || {};

@@ -88,2 +92,14 @@

/**
* Placeholder function for creating proxy sockets. This method immediatelly returns
* without a socket
*
* @param {Object} options Connection options
* @param {Function} callback Callback function to run with the socket keys
*/
SMTPPool.prototype.getSocket = function (options, callback) {
// return immediatelly
return callback(null, false);
};
/**
* Queues an e-mail to be sent using the selected settings

@@ -90,0 +106,0 @@ *

{
"name": "nodemailer-smtp-pool",
"version": "2.1.0",
"version": "2.2.0",
"description": "SMTP transport for Nodemailer",

@@ -27,12 +27,12 @@ "main": "lib/smtp-pool.js",

"nodemailer-wellknown": "0.1.7",
"smtp-connection": "2.0.1"
"smtp-connection": "2.2.1"
},
"devDependencies": {
"chai": "^3.4.1",
"chai": "^3.5.0",
"grunt": "^0.4.5",
"grunt-eslint": "^17.3.1",
"grunt-mocha-test": "^0.12.7",
"mocha": "^2.3.4",
"smtp-server": "^1.7.1"
"mocha": "^2.4.5",
"smtp-server": "^1.8.0"
}
}

@@ -44,2 +44,3 @@ # SMTP transport module for Nodemailer

* **rateLimit** (defaults to `false`) limits the message count to be sent in a second. Once rateLimit is reached, sending is paused until the end of the second. This limit is shared between connections, so if one connection uses up the limit, then other connections are paused as well
* **getSocket** optional method that is called every time a new connection is made against the SMTP server. This method can provide an existing socket to be used instead of creating a new one

@@ -46,0 +47,0 @@ Alternatively you can use connection url with protocol 'smtp:' or 'smtps:'. Use query arguments for additional configuration values.

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc