Skip to content
This repository has been archived by the owner on Aug 24, 2020. It is now read-only.
/ mail-confirm Public archive

A Node Js API for three stage email validation including, pattern, MX, and mailbox existence validation.

Notifications You must be signed in to change notification settings

eliashussary/mail-confirm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MailConfirm

A Node Js API for three stage email validation including the following;

  • email pattern validation,
  • MX mail server existence,
  • mailbox existence.

NOTE: True mailbox existence may only be performed, with certainty, by sending a verification email and having the user verify their email.

Install

# yarn
yarn add mail-confirm
# npm
npm i mail-confirm

Usage

Usage Notes

  • Ensure you execute this in an environment where SMTP port 25 is accessible. Failing to do so will throw error Mailbox check failed.
  • Internal instance methods are exposed as Static methods. If you wish to build your own email verification routine, or only require one of these staged methods, simply call MailConfirm.[methodName]. See API Documentation below.
import MailConfirm from 'mail-confirm'

// promises
const email = new MailConfirm({
    emailAddress: '[email protected]',
    timeout: 2000,
    mailFrom: '[email protected]',
    invalidMailboxKeywords: ['noreply', 'noemail']
})

email.check().then(console.log).catch(console.log)

// async/await
const check = async (emailAddress) => {
    try{
        const email = new MailConfirm({ emailAddress })
        const result = await email.check()
        return result
    }catch(err){
        throw new Error(err)
    }
}

check('[email protected]')
/*
output => 
    { emailAddress: '[email protected]',
    timeout: 2000,
    invalidMailboxKeywords: [],
    mailFrom: '[email protected]',
    mailbox: 'test',
    hostname: 'gmail.com',
    mxRecords:
    [ { exchange: 'gmail-smtp-in.l.google.com', priority: 5 },
        { exchange: 'alt1.gmail-smtp-in.l.google.com', priority: 10 },
        { exchange: 'alt2.gmail-smtp-in.l.google.com', priority: 20 },
        { exchange: 'alt3.gmail-smtp-in.l.google.com', priority: 30 },
        { exchange: 'alt4.gmail-smtp-in.l.google.com', priority: 40 } ],
    smtpMessages:
    [ { command: 'HELO gmail-smtp-in.l.google.com',
        message: '220 mx.google.com ESMTP n6si1346674qtk.310 - gsmtp\r\n',
        status: 220 },
        { command: 'MAIL FROM: <[email protected]>',
        message: '250 mx.google.com at your service\r\n',
        status: 250 },
        { command: 'RCPT TO: <[email protected]>',
        message: '250 2.1.0 OK n6si1346674qtk.310 - gsmtp\r\n',
        status: 250 } ],
    isValidPattern: true,
    isValidMx: true,
    isValidMailbox: true,
    result: 'Mailbox is valid.' }
  */

API Documentation

MailConfirm

Kind: global class

new MailConfirm(config)

Email address validation and SMTP verification API.

Param Type Description
config Object The email address you want to validate.
config.emailAddress string The email address you want to validate.
[config.mailFrom] string The email address used for the mail from during SMTP mailbox validation.
[config.invalidMailboxKeywords] Array.<string> Keywords you want to void, i.e. noemail, noreply etc.
[config.timeout] number The timeout parameter for SMTP mailbox validation.

mailConfirm.check() ⇒ Object

Runs the email validation routine and supplies a final result.

Kind: instance method of MailConfirm Returns: Object - - The instance state object containing all of the isValid* boolean checks, MX Records, and SMTP Messages.

MailConfirm.resolvePattern(emailAddress, [invalidMailboxKeywords]) ⇒ boolean

Determines if the email address pattern is valid based on regex and invalid keyword check.

Kind: static method of MailConfirm

Param Type Default Description
emailAddress string The full email address ypu want to check.
[invalidMailboxKeywords] Array.<string> [] An array of keywords to invalidate your check, ie. noreply
, noemail, etc.

MailConfirm.resolveMx(hostname) ⇒ Array.<Object>

Wrap of dns.resolveMx native method.

Kind: static method of MailConfirm Returns: Array.<Object> - - Returns MX records array { priority, exchange }

Param Type Description
hostname string The hostname you want to resolve, i.e. gmail.com

MailConfirm.resolveSmtpMailbox(config) ⇒ Array.<object>

Runs the SMTP mailbox check. Commands for HELO/EHLO, MAIL FROM, RCPT TO.

Kind: static method of MailConfirm Returns: Array.<object> - - Object of SMTP responses [ {command, status, message} ]

Param Type Description
config Object Object of parameters for Smtp Mailbox resolution.
config.emailAddress string The email address you want to check.
config.mxRecords Array.<object> The MX Records array supplied from resolveMx.
config.timeout number Timeout parameter for the SMTP routine.
config.mailFrom string The email address supplied to the MAIL FROM SMTP command.

Title: MailConfirm
Author: Elias Hussary [email protected]
License: MIT
Copyright: (C) 2017 Elias Hussary

About

A Node Js API for three stage email validation including, pattern, MX, and mailbox existence validation.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published