Skip to main content

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

Project description

Email Safeguard

A comprehensive email validation library that provides domain suggestions, disposable email detection, and MX record validation with a focus on security and user experience.

PyPI version Python Versions License: MIT

Features

  • 🔍 Smart validation with helpful suggestions
  • 🛡️ Disposable email detection
  • 📨 MX record validation
  • ⚡ Fast and customizable
  • 🎯 Type hints and modern Python support
  • 🔧 Configurable validation rules

Installation

pip install email-safeguard

Quick Start

from email_safeguard import EmailSafeguard

validator = EmailSafeguard()
result = validator.validate("user@gmial.com")

if result.is_valid:
    if result.suggestions:
        print(f"Email is valid but did you mean: {result.suggestions['domain']}?")
    else:
        print("Email is valid!")
else:
    print(f"Error: {result.message}")

Advanced Usage

Custom Configuration

validator = EmailSafeguard(
    check_mx=True,              # Enable MX record validation
    allow_disposable=False,     # Reject disposable emails
    suggest_corrections=True,   # Suggest corrections for typos
    max_distance=2             # Maximum edit distance for suggestions
)

Handling Results

from email_safeguard import EmailSafeguard, ValidationResult

validator = EmailSafeguard()
result = validator.validate("user@tempmail.com")

match result.result:
    case ValidationResult.VALID:
        print("Email is valid!")
    case ValidationResult.DISPOSABLE:
        print("Disposable emails not allowed")
    case ValidationResult.INVALID_DOMAIN:
        print(f"Invalid domain. Did you mean: {result.suggestions['domain']}?")
    case ValidationResult.NO_MX_RECORD:
        print("Domain has no mail server")

Data Files

The library uses three customizable data files:

  • popular_domains.txt: Common email domains
  • popular_tlds.txt: Valid top-level domains
  • disposable_domains.txt: Known disposable email providers

Custom Data Files

validator = EmailSafeguard(data_dir="path/to/data/directory")

Development

Running Tests

# Run all tests
python -m pytest

# Run with coverage
python -m pytest --cov=email_safeguard

Type Checking

mypy email_safeguard

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

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

Author

Chukwuka Ibejih (chukaibejih@gmail.com)

Acknowledgements

Built with:


If you find this library helpful, please give it 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.5.tar.gz (969.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

email_safeguard-0.1.5-py3-none-any.whl (968.9 kB view details)

Uploaded Python 3

File details

Details for the file email_safeguard-0.1.5.tar.gz.

File metadata

  • Download URL: email_safeguard-0.1.5.tar.gz
  • Upload date:
  • Size: 969.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for email_safeguard-0.1.5.tar.gz
Algorithm Hash digest
SHA256 a5c9094e871feaba31af24959073dea2a989ce4d9f752eb24e2c52cc769755f3
MD5 e3621e1249476df87d6c03103732998b
BLAKE2b-256 82e6a2f8c8f5353558cf762e3a40bca2e04bee94d46834e94e4e7127b112a9e5

See more details on using hashes here.

File details

Details for the file email_safeguard-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for email_safeguard-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 a5491455b7bb3862d60abbb4fb100dd7bdeab648dee8644e08a7ba75fcb416be
MD5 d1972330d8c9e4d3fc349da3c0f5bc61
BLAKE2b-256 4d5febcc33b4fcfc98f041fbdbe1170d9dbda2228c8f53c58d1458d711ecfb11

See more details on using hashes here.

Supported by

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