Goes beyond validating the characters that make up the email, and additionally performs DNS and mailbox checks to ensure that the email address is valid. Does all the network calls using cross-fetch
, so it works in the browser, on React Native, on Node, and anywhere else you want to run it.
yarn add cross-email-validator
import validateEmail from "cross-email-validator"
await validateEmail("developer+rnev@beewell.health"); // returns true
await validateEmail("@beewell.health"); // returns false
await validateEmail("developer+rnev@health"); // returns false
These are performed sequentially.
- It first ensures that the value is a non-empty string, that the character '
@
' is in the address precisely once, and that '@
' is not the first or last character. - It then checks that the TLD is in the TLD list given by tlds.
- Then uses validator/lib/isEmail for validating the e-mail address format. This does an extensive amount of checks, with a whole suite of checks specifically for
@gmail.com
addresses.
These are performed concurrenctly.
- Calls out to the
1.1.1.1
DNS over HTTPS server to ensure that there exists at least one MX record for the domain. - If you are in Node (according to
detect-is-node
), we also reach out to the SMTP servers returned by the MX check to ensure that at least one of them is running. - At the same time, calls out to the Kickbox "disposable email" API to validate that the e-mail domain is not a disposable email domain.
Note that any network check that errors out or times out will be counted as a pass. So if there is no internet, the internet connection is slow, or the server is down, then it is equivalent to the network check returning valid.
If you're looking for a minified version of the script (say, to include in a webpage), then look
no further than ./dist/browser/index.js
. It is produced using Parcel and automatically updated before every commit.
The browser support is specified in ./.browserslistrc
-- for more information, see browserslist on GitHub.
When you load that file, the global variable CrossEmail
will be provided which links to this module.
MIT. See the file named LICENSE
in this directory for details.