email-validator-dns-provider-rules
v1.2.1
Published
Strict Email Validator with checking DNS MX records and email providers rules in browser!
Downloads
124
Readme
Email validator dns provider rules
Email Validator with checking DNS MX records and strict real-life symbols rules
- more strict and realistic validation for symbols before "@"
- stricter specific rules for ESP like gmail, yahoo, etc
- check if domain really exist and works
- check if domain can receive emails (DNS MX record)
- your version of invalid reasons text
- passing your blocklist MX domains
- everything works in browser! (DNS query by DOH)
- works in Node.js via DNS library
- supports TypeScript and JavaScript
Invalid emails that other validators pass:
| email | reason | |-------------------------------|--------------------------------------------------------------------------------------| | [email protected] | Gmail don't allows "" and "-" symbols | | [email protected] | "8avymt4v93mvt3t03.com" isn't real domain and dont have DNS MX records | | s!o#m$e%o^n&[email protected] | 99.99% public email providers allow only "a-z","0-9",".","","-","+" before "@" part | | [email protected] | possibility of adding your blocklist of domains and MX domains |
Usage
npm install email-validator-dns-provider-rules --save
import { isValidEmail, getLastInvalidText } from "email-validator-dns-provider-rules";
if (!await isValidEmail('[email protected]')) {
alert('Please correct your email: ' + getLastInvalidText());
}
Your version of invalid reasons text
You can use getLastInvalidReasonId() and make dictionary with your version of text:
const CUSTOM_INVALID_TEXT = {
[INVALID_REASON_AMOUNT_OF_AT]: 'no @ symbol or too many of them',
[INVALID_REASON_USERNAME_GENERAL_RULES]:
'invalid username before @ by general email rules',
[INVALID_REASON_DOMAIN_GENERAL_RULES]:
'invalid domain after @ by general domain rules',
[INVALID_REASON_NO_DNS_MX_RECORDS]: 'domain after @ has no DNS MX records',
[INVALID_REASON_DOMAIN_IN_BLOCKLIST]: 'email domain is in blocklist',
[INVALID_REASON_USERNAME_VENDOR_RULES]:
'invalid username before @ by domain vendor rules',
};
Passing your blocklist domains
const yourBlocklistDomains = ['somedomain.com', '...'];
isValidEmail('[email protected]', yourBlocklistDomains);
Passing your DOH provider
You can choose other DNS over HTTPS provider or even create your own
isValidEmail('[email protected]', null, 'https://your-provider-site/dns-query');
Testing
npm test
generating d.ts
npm i -g typescript
tsc
NPM package
https://www.npmjs.com/package/email-validator-dns-provider-rules