← Back to all products

Email Verifier

$29

Verify email addresses via syntax checking, MX record lookup, and SMTP handshake.

📁 10 files
MarkdownPython

📄 Product Preview

Try the interactive reader and demo tools below, or get the full product with all content unlocked.

📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample

📁 File Structure 10 files

email-verifier/ ├── LICENSE ├── README.md ├── examples/ │ └── sample_emails.txt ├── free-sample.zip ├── guide/ │ ├── 01_features.md │ ├── 02_quick-start.md │ ├── 03_configuration.md │ └── 04_faq.md ├── index.html └── src/ └── email_verifier.py

📖 Documentation Preview README excerpt

Email Verifier

Verify email addresses via three layers of validation: syntax checking, MX record lookup, and SMTP handshake. Catch bad emails before they bounce.

Features

  • Syntax validation — RFC 5322-compliant regex with clear error messages
  • MX record lookup — DNS-based domain verification using stdlib only
  • SMTP handshake — Mailbox existence check without sending an email
  • Disposable domain detection — Flags known throwaway email services
  • Role address detection — Identifies non-personal addresses (admin@, support@, etc.)
  • Batch processing — Verify entire lists from text files or CSVs
  • Multiple output formats — JSON, CSV, or plain text
  • Rate limiting — Configurable delay between SMTP checks

Requirements

  • Python 3.10+
  • No external dependencies (stdlib only)

Quick Start


# Verify a single email
python src/email_verifier.py user@example.com

# Verify a list from a file
python src/email_verifier.py --file examples/sample_emails.txt

# Output results to JSON file
python src/email_verifier.py --file examples/sample_emails.txt --output results.json

# Skip SMTP checks (faster, syntax + MX only)
python src/email_verifier.py --file examples/sample_emails.txt --no-smtp

# CSV output format
python src/email_verifier.py --file examples/sample_emails.txt --format csv --output results.csv

Output Format

Each verified email produces a result object:


{
  "email": "user@example.com",
  "status": "valid",
  "syntax_valid": true,
  "mx_found": true,
  "smtp_connectable": true,
  "mailbox_exists": true,
  "is_disposable": false,
  "is_role_address": false,
  "mx_records": ["example.com"],
  "smtp_response": "250 OK",
  "error": "",
  "checked_at": "2026-03-14T12:00:00+00:00"
}

... continues with setup instructions, usage examples, and more.

📄 Code Sample .py preview

src/email_verifier.py #!/usr/bin/env python3 """ Email Verifier — Email Arsenal (DataNest) Verifies email addresses via three layers of validation: 1. Syntax validation (RFC 5322 compliance) 2. MX record lookup (DNS resolution) 3. SMTP handshake (mailbox existence check) Usage: python email_verifier.py user@example.com python email_verifier.py --file emails.txt --output results.json python email_verifier.py --batch emails.txt --workers 4 Dependencies: Python 3.10+ stdlib only (no pip packages) License: MIT """ from __future__ import annotations import argparse import csv import dns.resolver # NOQA — fallback below if unavailable import json import logging import re import smtplib import socket import struct import sys import time from dataclasses import asdict, dataclass, field from datetime import datetime, timezone from enum import Enum from pathlib import Path from typing import TextIO # --------------------------------------------------------------------------- # Constants # --------------------------------------------------------------------------- # RFC 5322 simplified email regex — catches 99% of real-world addresses # without going full-BNF. Intentionally rejects quoted local parts. EMAIL_REGEX = re.compile( r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+" r"@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" r"(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$" ) # Maximum length per RFC 5321 # ... 522 more lines ...
Buy Now — $29 Back to Products