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.
# yarn
yarn add mail-confirm
# npm
npm i mail-confirm
- 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.' }
*/
Kind: global class
- MailConfirm
- new MailConfirm(config)
- instance
- .check() ⇒
Object
- .check() ⇒
- static
- .resolvePattern(emailAddress, [invalidMailboxKeywords]) ⇒
boolean
- .resolveMx(hostname) ⇒
Array.<Object>
- .resolveSmtpMailbox(config) ⇒
Array.<object>
- .resolvePattern(emailAddress, [invalidMailboxKeywords]) ⇒
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. |
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.
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. |
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 |
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