Tutorial · Python

E-Mail-Adressen in Python validieren

Von der Syntaxprüfung bis zur vollständigen Postfachprüfung einer CSV-Datei, mit funktionierendem Python-Code.

Aktualisiert am 1. Oktober 2026 · 1 Min. Lesezeit

1. Syntaxprüfung mit email-validator

pip install email-validator
from email_validator import validate_email, EmailNotValidError

try:
    info = validate_email("Anna@Example.com", check_deliverability=False)
    email = info.normalized  # "Anna@example.com"
except EmailNotValidError as e:
    print(str(e))

check_deliverability=True prüft zusätzlich, ob die Domain DNS-Einträge für E-Mails hat.

2. MX-Abfrage mit dnspython

import dns.resolver  # pip install dnspython

def has_mx(domain: str) -> bool:
    try:
        return len(dns.resolver.resolve(domain, "MX")) > 0
    except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer, dns.resolver.NoNameservers):
        return False

3. Prüfen, ob das Postfach existiert

import os
import requests

def validate(email: str) -> dict:
    res = requests.get(
        "https://api.emailvalidation.io/v1/info",
        params={"email": email},
        headers={"apikey": os.environ["EMAILVALIDATION_API_KEY"]},
        timeout=30,
    )
    res.raise_for_status()
    return res.json()

result = validate("anna@company.com")
print(result["state"], result["reason"], result["score"])

4. Eine CSV-Datei validieren

import csv

with open("contacts.csv") as src, open("contacts.validated.csv", "w", newline="") as dst:
    reader = csv.DictReader(src)
    writer = csv.DictWriter(dst, fieldnames=reader.fieldnames + ["state", "reason", "disposable"])
    writer.writeheader()
    for row in reader:
        r = validate(row["email"])
        writer.writerow({**row, "state": r["state"], "reason": r["reason"], "disposable": r["disposable"]})

Bei großen Dateien senden Sie die Anfragen parallel mit einem Thread-Pool (5–10 Worker) und beachten das Rate-Limit Ihres Tarifs. Für eine schnelle, einmalige Liste mit bis zu 50 Adressen nutzen Sie den Bulk-E-Mail-Validator.

Häufig gestellte Fragen

Welche Python-Bibliothek validiert E-Mail-Adressen?

Das Paket email-validator (pip install email-validator) prüft die Syntax und optional, ob die Domain auflösbar ist. Ob das Postfach existiert, prüft es nicht.

Kann ich eine E-Mail mit smtplib prüfen?

Theoretisch können Sie mit smtplib RCPT TO senden, aber die meisten privaten und Cloud-IPs sind auf Port 25 gesperrt, viele Server nutzen Greylisting oder nehmen alles an (Catch-all), und wiederholte Anfragen können Ihre IP auf eine Blacklist bringen. Eine API nimmt Ihnen das ab.

E-Mail-Validierung API

E-Mails in Ihrer Anwendung prüfen

emailvalidation.io prüft Syntax, MX-Einträge und das Postfach per SMTP, markiert Wegwerf-, Rollen- und Freemail-Adressen und liefert einen Qualitätswert, alles in einer Anfrage.

/v1/info E-Mail-Validierung API Zur Dokumentation

100 kostenlose Prüfungen pro Monat. Keine Kreditkarte nötig.

GET https://api.emailvalidation.io/v1/info?email=support@emailvalidation.io

{
  "email": "support@emailvalidation.io",
  "domain": "emailvalidation.io",
  "format_valid": true,
  "mx_found": true,
  "smtp_check": true,
  "disposable": false,
  "role": true,
  "free": false,
  "score": 0.64,
  "state": "deliverable",
  "reason": "valid_mailbox"
}

Weiterlesen

Starten Sie noch heute mit unserer E-Mail-Validierung!

100 Prüfungen pro Monat kostenlos