diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 349be4c..ed5aab6 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,2 +1,5 @@ +0.1.4: +- Handle 'No MX record' exception + 0.1.3: - Added ambigious (4xx) response code handling diff --git a/setup.py b/setup.py index 99ae080..49088d0 100644 --- a/setup.py +++ b/setup.py @@ -26,7 +26,7 @@ class PostBuildPyCommand(build_py): setup( name='py3-validate-email', - version='0.1.3', + version='0.1.4', packages=find_packages(exclude=['tests']), install_requires=['dnspython'], author='László Károlyi', diff --git a/validate_email/mx_check.py b/validate_email/mx_check.py index 1f8f988..e86058c 100644 --- a/validate_email/mx_check.py +++ b/validate_email/mx_check.py @@ -3,7 +3,7 @@ from smtplib import SMTP, SMTPServerDisconnected from socket import gethostname from typing import Optional -import dns.resolver as dns +from dns.resolver import NXDOMAIN, NoAnswer, query DOMAIN_REGEX = re_compile(r'(?<=@)\[?([^\[\]]+)') @@ -19,9 +19,11 @@ def _get_domain_from_email_address(email_address): def _get_mx_records(domain: str) -> list: try: - records = dns.query(domain, 'MX') - except dns.NXDOMAIN: + records = query(domain, 'MX') + except NXDOMAIN: raise ValueError(f'Domain {domain} does not seem to exist') + except NoAnswer: + raise ValueError(f'Domain {domain} does not have an MX record') return [str(x.exchange) for x in records]