Anleitung · PHP & Laravel

E-Mail-Adressen in PHP validieren

PHP bringt eine E-Mail-Validierung mit, die aber beim Format aufhört. So kommen Sie bis zur Postfachprüfung.

Aktualisiert am 1. Oktober 2026 · 1 Min. Lesezeit

E-Mail-Adresse in PHP mit filter_var und FILTER_VALIDATE_EMAIL validieren

1. Formatprüfung mit filter_var

$email = trim($_POST['email'] ?? '');

if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    exit('Bitte geben Sie eine gültige E-Mail-Adresse ein.');
}

2. Nimmt die Domain E-Mails an?

$domain = substr(strrchr($email, '@'), 1);
if (!checkdnsrr($domain, 'MX') && !checkdnsrr($domain, 'A')) {
    exit('Diese E-Mail-Domain existiert nicht.');
}

3. Das Postfach mit der API prüfen

function validate_email_api(string $email): array {
    $ch = curl_init('https://api.emailvalidation.io/v1/info?email=' . urlencode($email));
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTPHEADER => ['apikey: ' . getenv('EMAILVALIDATION_KEY')],
    ]);
    $body = curl_exec($ch);
    curl_close($ch);
    return json_decode($body, true) ?? [];
}

$result = validate_email_api($email);
if (($result['state'] ?? '') === 'undeliverable' || !empty($result['disposable'])) {
    exit('Bitte verwenden Sie eine gültige, dauerhafte E-Mail-Adresse.');
}

Laravel

$request->validate([
    'email' => ['required', 'email:rfc,dns', function ($attribute, $value, $fail) {
        try {
            $r = Http::withHeaders(['apikey' => config('services.emailvalidation.key')])
                ->timeout(10)
                ->get('https://api.emailvalidation.io/v1/info', ['email' => $value])
                ->json();
        } catch (\Illuminate\Http\Client\ConnectionException $e) {
            return; // API nicht rechtzeitig erreichbar: Adresse durchlassen
        }
        if (($r['state'] ?? null) === 'undeliverable' || ($r['disposable'] ?? false)) {
            $fail('Bitte verwenden Sie eine gültige, dauerhafte E-Mail-Adresse.');
        }
    }],
]);

Ist die API nicht rechtzeitig erreichbar, lässt der catch-Block die Adresse durch, statt die Anmeldung zu blockieren.

E-Mail-Validierung in anderen Sprachen

Häufig gestellte Fragen

Reicht filter_var mit FILTER_VALIDATE_EMAIL?

Es ist eine solide Formatprüfung, akzeptiert aber Adressen auf Domains, die nicht existieren, und Postfächer, die nie angelegt wurden. Kombinieren Sie es mit einer MX-Prüfung und bei Anmeldungen und Importen mit einer API-Prüfung.

Wie prüfe ich in Laravel die DNS-Einträge einer E-Mail-Domain?

Nutzen Sie die Regel email:rfc,dns. Sie prüft das Format und ob die Domain DNS-Einträge hat, aber nicht, ob das Postfach existiert.

E-Mail-Validierungs-API

E-Mail-Adressen 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-Validierungs-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",
  "user": "support",
  "tag": "",
  "domain": "emailvalidation.io",
  "format_valid": true,
  "mx_found": true,
  "smtp_check": true,
  "catch_all": null,
  "role": true,
  "disposable": false,
  "free": false,
  "score": 0.64,
  "state": "deliverable",
  "reason": "low_quality",
  "did_you_mean": "",
  "catch_all_resolution": null,
  "bounce_probability": null,
  "status": "valid",
  "sub_status": "role_based",
  "explanation": "The mailbox exists, but it is a role address (such as info@ or support@), usually read by a team rather than one person.",
  "recommended_action": "send_with_caution"
}

Weiterlesen

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

Kostenlos starten