Skip to main content

A Python library for validating and suggesting corrections for email addresses.

Project description

Email Safeguard

A robust email validation library with domain and TLD suggestions, disposable email detection, and MX record validation.

Features

  • Validates email format using Django's built-in validators.

  • Detects disposable email addresses.

  • Suggests corrections for common domain and TLD typos.

  • Checks for valid MX records for the domain.

Installation

To install the library, use pip:

pip install email-safeguard

Usage

Basic Usage

Here's an example of how to use the EmailValidator class:

from email_validator.validator import EmailValidator

validator = EmailValidator()

result = validator.validate("user@example.com")

if result["valid"]:

    print("Email is valid!")

else:

    print("Error:", result["error"])

Custom Domain and TLD Lists

You can customize the lists of popular domains, TLDs, and disposable domains by providing your own text files:

validator = EmailValidator(

    domains_file='path/to/custom_domains.txt',

    tlds_file='path/to/custom_tlds.txt',

    disposable_file='path/to/custom_disposable_domains.txt'

)

Data Files

The library uses three data files for validation:

  • popular_domains.txt: A list of popular email domains.

  • popular_tlds.txt: A list of popular top-level domains (TLDs).

  • disposable_domains.txt: A list of known disposable email domains.

Each file should contain one entry per line.

Example popular_domains.txt


gmail.com

yahoo.com

outlook.com

hotmail.com

Example popular_tlds.txt


com

net

org

edu

Example disposable_domains.txt


mailinator.com

10minutemail.com

Full Example

Here's a more detailed example demonstrating all features:

import os

from email_validator import EmailValidator

# Initialize the validator with custom data files

validator = EmailValidator(

    domains_file='data/popular_domains.txt',

    tlds_file='data/popular_tlds.txt',

    disposable_file='data/disposable_domains.txt'

)

emails = [

    "valid.email@gmail.com",

    "invalid-email",

    "test@mailinator.com",

    "user@gnail.com",

    "user@gmail.cmo",

    "user@nonexistentdomain.xyz"

]

for email in emails:

    result = validator.validate(email)

    if result["valid"]:

        print(f"{email} is valid!")

    else:

        print(f"Error with {email}: {result['error']}")

Running Tests

To run the tests, use the following command:

python -m unittest discover

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

Contributions are welcome! Feel free to contribute to this project if you want to add new features, improve existing ones, or fix bugs.

Issues

Please raise and issue for bug reporst, feature requests or suggestions.

Author

Chukwuka Ibejih

For any questions or feedback, please contact chukaibejih@gmail.com.

Acknowledgements

This library uses the following third-party packages:

If you love this project, please consider giving me a ⭐

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

email_safeguard-0.1.2.tar.gz (966.7 kB view hashes)

Uploaded Source

Built Distribution

email_safeguard-0.1.2-py3-none-any.whl (967.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page