Socket
Socket
Sign inDemoInstall

zb-email-verifier

Package Overview
Dependencies
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zb-email-verifier - npm Package Compare versions

Comparing version 0.6.4 to 0.6.5

dist/smtp.d.ts

145

dist/index.js

@@ -38,9 +38,2 @@ "use strict";

};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {

@@ -50,3 +43,3 @@ return (mod && mod.__esModule) ? mod : { "default": mod };

Object.defineProperty(exports, "__esModule", { value: true });
var dns = __importStar(require("dns"));
var dns_1 = __importDefault(require("dns"));
var debug_1 = __importDefault(require("debug"));

@@ -56,7 +49,7 @@ var lodash_1 = __importDefault(require("lodash"));

var bluebird_1 = __importDefault(require("bluebird"));
var netsend_1 = __importDefault(require("./netsend"));
var smtp_1 = require("./smtp");
var debug = debug_1.default.debug("email-verifier");
function verify(opts) {
return __awaiter(this, void 0, void 0, function () {
var emailRegex, currentJob, netConn, timedout, mainJob;
var emailRegex, currentJob, client, timedout, mainJob;
var _this = this;

@@ -70,24 +63,22 @@ return __generator(this, function (_a) {

mainJob = bluebird_1.default.resolve((function () { return __awaiter(_this, void 0, void 0, function () {
var _a, emailHost, mx;
var _a, emailHost, host;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
currentJob = "MXRECORD";
_a = opts.to.split('@'), emailHost = _a[1];
if (timedout)
return [2 /*return*/];
currentJob = "MXRECORD";
return [4 /*yield*/, resolveMx(emailHost)];
case 1:
mx = _b.sent();
host = _b.sent();
if (timedout)
return [2 /*return*/];
currentJob = "CONN";
client = new smtp_1.SmtpClient({ host: host });
if (timedout)
return [2 /*return*/];
return [4 /*yield*/, netsend_1.default({ port: 25, host: mx })];
case 2:
netConn = _b.sent();
currentJob = "VERIFY";
if (timedout)
return [2 /*return*/];
return [4 /*yield*/, verifySMTP(netConn, opts, emailHost)];
case 3: return [2 /*return*/, _b.sent()];
return [4 /*yield*/, verifySMTP(client, opts, emailHost)];
case 2: return [2 /*return*/, _b.sent()];
}

@@ -103,4 +94,4 @@ });

return;
if (netConn)
netConn.end();
if (client)
client.close();
if (currentJob)

@@ -126,4 +117,4 @@ return resolve(currentJob + "_TIMEOUT");

case 3:
if (netConn)
netConn.end();
if (client)
client.close();
return [7 /*endfinally*/];

@@ -149,3 +140,3 @@ case 4: return [2 /*return*/];

_a.trys.push([1, 3, , 4]);
dnsResolveMx = bluebird_1.default.promisify(dns.resolveMx, { context: dns });
dnsResolveMx = bluebird_1.default.promisify(dns_1.default.resolveMx, { context: dns_1.default });
return [4 /*yield*/, dnsResolveMx(emailHost)];

@@ -173,66 +164,49 @@ case 2:

return __awaiter(this, void 0, void 0, function () {
var resmsg, writeMsg, writeMsg_1, e_3;
var ensure, response, randomEmail, response_1, e_3;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_a.trys.push([0, 10, 11, 12]);
debug('CONNECTED SMTP SERVER');
return [4 /*yield*/, netConn.response()];
debug('VERIFY USING SMTP');
_a.label = 1;
case 1:
resmsg = _a.sent();
debug(resmsg[0]);
if (resmsg[0].substr(0, 3) !== '220') {
throw new Error("VERIFY_FAIL");
}
writeMsg = "HELO " + opts.helo;
debug(writeMsg);
netConn.write(writeMsg);
return [4 /*yield*/, netConn.response()];
_a.trys.push([1, 8, 9, 10]);
ensure = function (promise, value) { return __awaiter(_this, void 0, void 0, function () {
var response;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, promise];
case 1:
response = _a.sent();
if (response.code !== value)
throw new Error("VERIFY_FAIL");
return [2 /*return*/, response];
}
});
}); };
return [4 /*yield*/, ensure(netConn.connect(), 220)];
case 2:
resmsg = _a.sent();
debug(resmsg[0]);
if (resmsg[0].substr(0, 3) !== '250') {
throw new Error("VERIFY_FAIL");
}
// MAIL FROM
writeMsg = "MAIL FROM: <" + opts.from + ">";
debug(writeMsg);
netConn.write(writeMsg);
return [4 /*yield*/, netConn.response()];
_a.sent();
return [4 /*yield*/, ensure(netConn.helo(opts.helo), 250)];
case 3:
resmsg = _a.sent();
debug(resmsg[0]);
if (resmsg[0].substr(0, 3) !== '250') {
throw new Error("VERIFY_FAIL");
}
// RCPT TO
writeMsg = "RCPT TO: <" + opts.to + ">";
debug(writeMsg);
netConn.write(writeMsg);
return [4 /*yield*/, netConn.response()];
_a.sent();
return [4 /*yield*/, ensure(netConn.from(opts.from), 250)];
case 4:
resmsg = _a.sent();
debug(resmsg[0]);
if (!(resmsg[0].substr(0, 3) === '250')) return [3 /*break*/, 8];
if (!(opts.catchalltest === true)) return [3 /*break*/, 6];
// RCPT TO
_a.sent();
return [4 /*yield*/, netConn.to(opts.to)];
case 5:
response = _a.sent();
if (response.code !== 250)
return [2 /*return*/, "NOT_EXIST"];
if (!(opts.catchalltest === true)) return [3 /*break*/, 7];
debug('MAILBOX EXIST..CHECKING FOR CATCHALL');
writeMsg_1 = "RCPT TO: <" + generateRandomEmail(emailHost) + ">";
debug(writeMsg_1);
netConn.write(writeMsg_1);
return [4 /*yield*/, netConn.response()];
case 5:
resmsg = _a.sent();
if (resmsg[0].substr(0, 3) === '250') {
return [2 /*return*/, 'CATCH_ALL'];
}
else {
return [2 /*return*/, 'EXIST'];
}
return [3 /*break*/, 7];
case 6: return [2 /*return*/, 'EXIST'];
case 7: return [3 /*break*/, 9];
case 8: return [2 /*return*/, 'NOT_EXIST'];
case 9: return [3 /*break*/, 12];
case 10:
randomEmail = randomstring_1.default.generate(32) + "@" + emailHost;
return [4 /*yield*/, netConn.to(randomEmail)];
case 6:
response_1 = _a.sent();
if (response_1.code === 250)
return [2 /*return*/, "CATCH_ALL"];
_a.label = 7;
case 7: return [2 /*return*/, "EXIST"];
case 8:
e_3 = _a.sent();

@@ -242,6 +216,6 @@ if (debug_1.default.enabled(debug.namespace))

throw new Error("VERIFY_FAIL");
case 11:
netConn.end();
case 9:
netConn.close();
return [7 /*endfinally*/];
case 12: return [2 /*return*/];
case 10: return [2 /*return*/];
}

@@ -251,5 +225,2 @@ });

}
function generateRandomEmail(emailHost) {
return randomstring_1.default.generate(32) + "@" + emailHost;
}
function delay(ms) {

@@ -256,0 +227,0 @@ return new Promise(function (resolve) { return setTimeout(resolve, ms); });

6

package.json
{
"name": "zb-email-verifier",
"description": "Promise-based library for verify an email address existence via SMTP",
"version": "0.6.4",
"version": "0.6.5",
"author": {

@@ -27,5 +27,7 @@ "name": "ZIGBANG",

"bluebird": "^3.5.5",
"chalk": "^3.0.0",
"debug": "^4.1.1",
"lodash": "^4.17.15",
"randomstring": "^1.1.5"
"randomstring": "^1.1.5",
"wait-queue": "^1.1.2"
},

@@ -32,0 +34,0 @@ "devDependencies": {

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc