Check if an email is valid with using SMTP, regexes and blacklists https://gitea.ksol.io/karolyi/py3-validate-email/
Go to file
Reinhard Müller d7666bd6ad Introduce EmailAddress class
This unifies the tasks of splitting an email address into user and
domain parts as well as converting an international domain name into the
ASCII-compatible encoding (ACE).
2020-04-13 09:44:50 +02:00
.github Update FUNDING.yml 2019-12-05 22:36:55 +01:00
tests Introduce EmailAddress class 2020-04-13 09:44:50 +02:00
validate_email Introduce EmailAddress class 2020-04-13 09:44:50 +02:00
.gitignore Add auto-updater 2019-11-24 18:13:02 +01:00
.isort.cfg Renaming package, adding isort 2019-03-01 23:29:01 +01:00
.travis.yml Add a test for preinstalled data directory checking 2020-04-12 20:19:57 +02:00
AUTHORS Beautifying code, updating AUTHORS+CHANGELOG 2020-04-10 13:26:06 +02:00
CHANGELOG.txt Fix datadir creation for good 2020-04-12 16:40:04 +02:00
LICENSE Updated license to be LGPL. Fixed #22 2014-07-03 11:34:25 +02:00
MANIFEST.in Bumping version, fixing auto blacklist downloading on wheel creation 2020-04-12 13:57:10 +02:00
README.rst Replace MethodType to Callable 2020-04-11 17:54:34 +02:00
requirements.txt Fix README.rst 2020-04-11 14:55:52 +02:00
setup.cfg Renaming package, adding isort 2019-03-01 23:29:01 +01:00
setup.py Read requirements either from package info or from requirements.txt 2020-04-12 19:29:11 +02:00

README.rst

.. image:: https://travis-ci.org/karolyi/py3-validate-email.svg?branch=master
    :target: https://travis-ci.org/karolyi/py3-validate-email
.. image:: https://bmc-cdn.nyc3.digitaloceanspaces.com/BMC-button-images/custom_images/orange_img.png
    :target: https://buymeacoff.ee/karolyi

============================
py3-validate-email
============================

py3-validate-email is a package for Python that check if an email is valid, not blacklisted, properly formatted and really exists.

This module is for Python 3.6 and above!

INSTALLATION
============================

You can install the package with pip::

    python -m pip install py3-validate-email


USAGE
============================

Basic usage::

    from validate_email import validate_email
    is_valid = validate_email(email_address='example@example.com', check_regex=True, check_mx=True, from_address='my@from.addr.ess', helo_host='my.host.name', smtp_timeout=10, dns_timeout=10, use_blacklist=True)

:code:`check_regex` will check will the email address has a valid structure and defaults to True

:code:`check_mx`: check the mx-records and check whether the email actually exists

:code:`from_address`: the email address the probe will be sent from,

:code:`helo_host`: the host to use in SMTP HELO when checking for an email,

:code:`smtp_timeout`: seconds until SMTP timeout

:code:`dns_timeout`: seconds until DNS timeout

:code:`use_blacklist`: use the blacklist of domains downloaded from https://github.com/martenson/disposable-email-domains

The function :code:`validate_email_or_fail()` works exactly like :code:`validate_email`, except that it raises an exception in the case of validation failure instead of returning :code:`False`.

Auto-updater
============================
The package contains an auto-updater for downloading and updating the built-in blacklist.txt. It will run on each module load (and installation), but will try to update the content only if the file is older than 5 days, and if the content is not the same that's already downloaded.

The update can be triggered manually::

    from validate_email.updater import update_builtin_blacklist

    update_builtin_blacklist(force: bool = False, background: bool = True,
        callback: Callable = None) -> Optional[Thread]

:code:`force`: forces the update even if the downloaded/installed file is fresh enough.

:code:`background`: starts the update in a ``Thread`` so it won't make your code hang while it's updating. If you set this to true, the function will return the Thread used for starting the update so you can ``join()`` it if necessary.

:code:`callback`: An optional `Callable` (function/method) to be called when the update is done.

TODOs and BUGS
============================
See: https://github.com/karolyi/py3-validate-email/issues