Erlaubte Zeichen in EMail-Adressen bzw. Mailboxnamen

Hinweis vorab: seit PHP 5.3.0 ist die im vorliegenden Artikel gezeigte regex-Erweiterung als veraltet markiert. Am Ende des Artikels finden Sie einen neue, sehr bequeme Variante. Insofern ist der folgende Artikel hier nur mehr aus historischen Gründen belassen.

Die folgende Adresse ist tatsächlich eine gültige Mail-Adresse, alle diese Zeichen vor dem @ sind erlaubt:

(Quelle: Wikipedia)


Beachten Sie bitte, dass die Sonderzeichen !#$%&’*+-/=?^_`.{|}~ nur im Teil vor dem @ der Mailadresse (dem local-part) grundsätzlich erlaubt sind. Für die Domain (der Teil hinter dem @) gelten andere Regeln.

Und noch etwas. Diese Zeichen sind im local-part der Mailadresse zwar  zugelassen, Sie können aber nicht unbedingt alle diese Zeichen im Mailbox-Namen auf Ihrem eigenen Mailserver benutzen, sondern nur einige davon. Welche der Zeichen tatsächlich für die Mailadresse verwendet werden können, das liegt an der Konfiguration der Mailserver durch die zuständigen Administratoren bzw. die dafür eingesetzte Software.

Der alte Weg

Wenn Sie eine Mail-Adresse, die von einem Besucher der Website in ein Formular eingegeben wurde, auf zumindest korrekte Syntax prüfen wollen, so kann diese Prüfung mit Hilfe von Regular Expressions in PHP so aussehen:

Der neue Weg: gefiltert und gereinigt

Seit PHP 5.3.0 ist die o.a. regex-Erweiterung als veraltet markiert. Der folgende Test erleichtert das Programmiererleben enorm:

if (filter_var($emailadresse, FILTER_VALIDATE_EMAIL)) {
// alles okay.
} else {
echo 'Bitte prüfen Sie Ihre E-Mail Adresse.';
}

Alles Gute.

Ähnliche Artikel:

7 Antworten auf „Erlaubte Zeichen in EMail-Adressen bzw. Mailboxnamen“

  1. Man kann gute Informationen auch schnell und gut rüberbringen.
    Da kann man sich ein Beispiel nehmen.

    Gut gemacht, danke!

  2. Zwei Kleinigkeiten: Es gibt inzwischen auch .info-Endungen, also sollte man da das ganze erweitern. Außerdem würde mich interessieren, was das \. bewirkt? Vielleicht ist ja auch direkt eine Antwort auf meine Mail-Addy möglich, da ich eher selten hier rein gucke.

  3. @Michi: Du hast recht, Danke für den Hinweis. Ist ausgebessert von {2,3} auf {2,6} am Ende der langen Zeile. Damit wird nun auch .museum als gültig erfasst.

    \. bewirkt, dass hier wirklich ein Punkt gemeint ist, und nicht der Punkt als Regular Expression Symbol, wo der Punkt (.) bedeutet, dass an seinem Platz ein (fast) beliebiges Zeichen stehen kann.

    Auszug aus dem Wikipedia-Artikel dazu:
    \ hebt gegebenenfalls die Metabedeutung des nächsten Zeichens auf. […] Auf diese Weise lässt sich auch ein Punkt „.“ mit „\.“ suchen, während nach „\“ mit „\\“ gesucht wird.

    http://de.wikipedia.org/wiki/Regul%C3%A4rer_Ausdruck

  4. Hallo,
    ja ich habe es gesehen, dass der Beitrag schon über 2 Jahre alt ist.
    Da die Seite aber auch in Zukunft aufgerufen werden kann sollte diese auch aktualisiert werden.

    Ich vermisse die deutschen Umlaute und alle „ereg…“ Funktionen sind seit PHP 5.3.0 als DEPRECATED (veraltet) markiert.

  5. Da hat sich noch ein Fehler im regulären Ausdruck eingeschlichen: wenn du in einer Gruppe [….] einen Bindestrich matchen willst, dann muss dieser entweder ganz am Ende stehen oder escaped werden.

  6. Die PHP regex-Erweiterung filter_var ist nur zu gebrauchen wenn die Email keine Sonderzeichen wie äöüÄÖÜ àéè etc.. enthält.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.