Skip to content

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

License

Notifications You must be signed in to change notification settings

chukaibejih/email-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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("[email protected]")

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 = [

    "[email protected]",

    "invalid-email",

    "[email protected]",

    "[email protected]",

    "[email protected]",

    "[email protected]"

]

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 [email protected].

Acknowledgements

This library uses the following third-party packages:

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages