email-validator-dns-provider-rules
v1.3.2
Published
Strict Email Validator with checking DNS MX records and email providers rules in browser!
Downloads
322
Readme
Email validator with DNS check and provider's rules
Examples, that other validators pass:
| invalid 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 |
Works in Browser and Node. TypeScript and JavaScript.
Usage
Please install NPM package (works in browser also)
npm install email-validator-dns-provider-rules --save
Validation:
import { isValidEmail } from "email-validator-dns-provider-rules";
if (!await isValidEmail('[email protected]')) {
alert('Your email is invalid');
}
Showing details:
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