Сообщить об ошибке.

Модуль validate_email в Python.

Проверка существования EMAIL-адреса.

Модуль validate_email позволяет проверять, является ли EMAIL-адреса (адрес электронной почты) действительным, правильно отформатированным и действительно ли существует.

Установка модуля validate_email в виртуальное окружение:

Во-первых, необходимо установить сам модуль:

# создаем виртуальное окружение 
$ python3 -m venv .venv --prompt VirtualEnv
# активируем виртуальное окружение 
$ source .venv/bin/activate
# ставим модуль validate_email
(VirtualEnv) sample@com:~$ python -m pip install -U validate_email

Для проверки mx домена (например у email: example@mail.ru, будет проверяться существование DNS записи mx.mail.ru), а так-же проверки существования самого email-адреса необходимо дополнительно поставить модуль py3dns. Модуль py3dns предоставляет DNS API для поиска записей DNS.

(VirtualEnv) sample@com:~$ python -m pip install -U py3dns

Примеры валидации и существования email-адреса:

Валидация email-адреса:

>>> from validate_email import validate_email
>>> validate_email('sample@example.com')
# True
>>> validate_email('sam\ple@example.com')
# False

Проверка наличия в домене SMTP-сервера.

Внимание, частые запросы к DNS записям блокируются всеми почтовыми сервисами.

>>> from validate_email import validate_email
# домен `example.com` не существует
>>> is_valid = validate_email('example@example.com', check_mx=True)
>>> print(is_valid)
# None

# домен `limpopo.af` существует, но нет `mx` записи
>>> is_valid = validate_email('example@limpopo.af', check_mx=True)
>>> print(is_valid)
# False

>>> is_valid = validate_email('no-reply@mail.ru', check_mx=True)
>>> print(is_valid)
# True

Проверка существования электронной почты.

Внимание, частые запросы к DNS записям блокируются всеми почтовыми сервисами. Возможна только единичная проверка (например, раз в минуту).

>>> from validate_email import validate_email
>>> is_valid = validate_email('no-reply@mail.ru', verify=True)
>>> print(is_valid)
# True
>>> is_valid = validate_email('no-reply@gmail.com', verify=True)
>>> print(is_valid)
# True

# email-адрес не найден
>>> is_valid = validate_email('sxdfghdf@mail.ru', verify=True)
>>> print(is_valid)
# None