NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #171 most downloaded on PyPI
A robust email address syntax and deliverability validation library.
Last release 1 years ago
26 Aug 2025
Release timing varies
gaps range from 8 days to 1.2 years
Most releases are documented
notes for 20 of 23 stable releases
1 version withdrawn
withdrawn after publishing
11 years old
32 releases · first in 2015
The package name is changed from using an underscore (email_validator) to a dash (email-validator) to match PyPi's normalized package name.
strict=True parameter, and the overall 254 character email address length limit is still in place.allow_display_name=True, display names are now returned with Unicode NFC normalization.Email addresses with internationalized local parts could, with rare Unicode characters, be returned as valid but actually be invalid in their normaliz
normalized field). Local parts now re-validated after Unicode NFC normalization to ensure that invalid characters cannot be injected into the normalized address and that characters with length-increasing NFC normalizations cannot cause a local part to exceed the maximum length after normalization.My Name <address@domain> strings, i.e. a display name plus an email address in angle brackets, is now available. It is off by default.One column per quarter.
normalized field). In particular, it is possible to get a normalized address with a ";" character, which is not valid and could change the interpretation of the address. Local parts now re-validated after Unicode NFC normalization to ensure that invalid characters cannot be injected into the normalized address and that characters with length-increasing NFC normalizations cannot cause a local part to exceed the maximum length after normalization. Thanks to khanh@calif.io from https://calif.io for reporting the issue.My Name <address@domain> strings, i.e. a display name plus an email address in angle brackets, is now available. It is off by default.The domain name length limit is corrected from 255 to 253 IDNA ASCII characters. I misread the RFCs.
Fixed typo 'marking' instead of 'marketing' in case-insensitive mailbox name list.
raise ... from for better nested exception tracking.Nothing published for this version
…was superseded by normalized , will now raise a deprecation warning if used. See https://stackoverflow.com/q/879173 for strategies to suppress the Dep…
email field on the returned ValidatedEmail object, which in the previous version was superseded by normalized, will now raise a deprecation warning if used. See https://stackoverflow.com/q/879173 for strategies to suppress the DeprecationWarning.__version__ module attribute is added.Nothing published for this version
Nothing published for this version
The old dict-like pattern for the return value of validate_email is deprecated.
This is a major update to the library, but since email address specs haven't changed there should be no significant changes to which email addresses are considered valid or invalid with default options. There are new options for accepting unusual email addresses that were previously always rejected, some changes to how DNS errors are handled, many changes in error message text, and major internal improvements including the addition of type annotations. Python 3.7+ is now required. Details follow:
email field on the returned ValidatedEmail object has been renamed to normalized to be clearer about its importance, but access via .email is also still supported.postmaster are now normalized to lowercase per RFC 2142.Versions 2.0.0.post1 and 2.0.0.post2 corrected some packaging issues. 2.0.0.post2 also added a check for an invalid combination of arguments.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Version 1.3.1 (January 21, 2023)
Version 1.3.0 (September 18, 2022)
Rejecting domains with NULL MX records (when deliverability checks are turned on).
Changes in version 1.2.0:
test_environment option is added for using @*.test domains.In version 1.2.1:
Reject domains with NULL MX records (when deliverability checks are turned on).
test_environment option is added for using @*.test domains.Allow passing a custom dns_resolver so that a DNS cache and a custom timeout can be set.
Fix deprecation warning in Python 3.8.
Fix exception when DNS queries time-out.
The main function now returns an object with attributes rather than a dict with keys, but accessing the object in the old way is still supported.
Prevent resolving domain names as if they were not fully qualified using a local search domain settings.
Added a timeout argument for DNS queries.
This update simply adds Py2/Py3 wheel distribution to make installation easier. There have been no changes of any real substance since the 1.0 release
This update simply adds Py2/Py3 wheel distribution to make installation easier. There have been no changes of any real substance since the 1.0 release - just minor bugs and packaging.
Fix dnspython package name in Python 3.
* Fixed minor errors.
Fail domains with a leading period.
Use IDNA 2008 instead of IDNA 2003 and use the idna package's UTS46 normalization instead of our own.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →