Releases: JoshData/python-email-validator
Releases · JoshData/python-email-validator
2.2.0 (June 20, 2024)
- Email addresses with internationalized local parts could, with rare Unicode characters, be returned as valid but actually be invalid in their normalized form (returned in the
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. - The length check for email addresses with internationalized local parts is now also applied to the original address string prior to Unicode NFC normalization, which may be longer and could exceed the maximum email address length, to protect callers who do not use the returned normalized address.
- Improved error message for IDNA domains that are too long or have invalid characters after Unicode normalization.
- A new option to parse
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. - Improvements to Python typing.
- Some additional tests added.
v2.1.2
2.1.2 (June 16, 2024)
- The domain name length limit is corrected from 255 to 253 IDNA ASCII characters. I misread the RFCs.
- When a domain name has no MX record but does have an A or AAAA record, if none of the IP addresses in the response are globally reachable (i.e. not Private-Use, Loopback, etc.), the response is treated as if there was no A/AAAA response and the email address will fail the deliverability check.
- When a domain name has no MX record but does have an A or AAAA record, the mx field in the object returned by validate_email incorrectly held the IP addresses rather than the domain itself.
- Fixes in tests.
v2.1.1 (February 26, 2024)
- Fixed typo 'marking' instead of 'marketing' in case-insensitive mailbox name list.
- When DNS-based deliverability checks fail, in some cases exceptions are now thrown with
raise ... from
for better nested exception tracking. - Fixed tests to work when no local resolver can be configured.
- This project is now licensed under the Unlicense (instead of CC0).
- Minor improvements to tests.
- Minor improvements to code style.
v2.1.0
2.1.0 (October 22, 2023)
- Python 3.8+ is now required (support for Python 3.7 was dropped).
- The old
email
field on the returnedValidatedEmail
object, which in the previous version was superseded bynormalized
, will now raise a deprecation warning if used. See https://stackoverflow.com/q/879173 for strategies to suppress the DeprecationWarning. - A
__version__
module attribute is added. - The email address argument to validate_email is now marked as positional-only to better reflect the documented usage using the new Python 3.8 feature.
v2.0.0
v1.3.1
v1.3.0
Version 1.3.0 (September 18, 2022)
- Deliverability checks now check for 'v=spf1 -all' SPF records as a way to reject more bad domains.
- Special use domain names now raise EmailSyntaxError instead of EmailUndeliverableError since they are performed even if check_deliverability is off.
- New module-level attributes are added to override the default values of the keyword arguments and the special-use domains list.
- The keyword arguments of the public methods are now marked as keyword-only.
- pyIsEmail's test cases are added to the tests.
- Recommend that check_deliverability be set to False for validation on login pages.
- Added an undocumented globally_deliverable option.
v1.2.1
Changes in version 1.2.0:
- Rejecting domains with NULL MX records (when deliverability checks are turned on).
- Rejecting unsafe unicode characters. (Some of these checks you should be doing on all of your user inputs already!)
- Rejecting most special-use reserved domain names. A new
test_environment
option is added for using@*.test
domains. - Some fixes in the tests.
In version 1.2.1:
- example and example.com/net/org are removed from the special-use domains list.
- SPECIAL_USE_DOMAIN_NAMES is now a documented part of the API (and it is a list instead of a tuple)
- New module-level attributes ALLOW_SMTPUTF8, CHECK_DELIVERABILITY, TEST_ENVIRONMENT, and DEFAULT_TIMEOUT can be used to change the default values of the keyword arguments.
- Travis CI is updated to test from Python 3.6 forward, dropping 3.5.