Ich frage nicht nach einer vollständigen E-Mail-Validierung.
Ich möchte nur wissen, welche Zeichen in den Teilen Benutzername
und Server
der E-Mail Adresse erlaubt sind. Das ist vielleicht zu vereinfacht, vielleicht können E-Mail-Adressen auch andere Formen annehmen, aber das ist mir egal. Ich frage nur nach dieser einfachen Form: Benutzername@Server
(z.B. [email protected]) und erlaubte Zeichen in beiden Teilen.
Siehe RFC 5322: Internet Message Format und, in geringerem Maße, RFC 5321: Simple Mail Transfer Protocol.
In RFC 822 werden auch E-Mail-Adressen behandelt, allerdings geht es hier hauptsächlich um deren Struktur:
addr-spec = local-part "@" domain ; global address
local-part = word *("." word) ; uninterpreted
; case-preserved
domain = sub-domain *("." sub-domain)
sub-domain = domain-ref / domain-literal
domain-ref = atom ; symbolic reference
Und wie üblich hat Wikipedia einen guten Artikel über E-Mail-Adressen:
Der lokale Teil der E-Mail-Adresse kann eines der folgenden ASCII-Zeichen verwenden:
- lateinische Groß- und Kleinbuchstaben
A
bisZ
unda
bisz
;- Ziffern
0
bis9
;- Sonderzeichen
!#$%&'*+-/=?^_
{|}~``;- Punkt
.
, sofern er nicht das erste oder letzte Zeichen ist, es sei denn, er steht in Anführungszeichen, und sofern er auch nicht fortlaufend erscheint, es sei denn, er steht in Anführungszeichen (z. B. ist[email protected]
nicht erlaubt, aber"John..Doe"@example.com
ist erlaubt);- Leerzeichen und
"(),::' sind mit Einschränkungen erlaubt (sie sind nur innerhalb einer Zeichenkette in Anführungszeichen erlaubt, wie im folgenden Absatz beschrieben, und außerdem muss einem Backslash oder doppelten Anführungszeichen ein Backslash vorausgehen); Kommentare sind mit Klammern an beiden Enden des lokalen Teils erlaubt; z. B. sind
john.smith(comment)@example.comund
(comment)[email protected]beide äquivalent zu
[email protected]`.
Zusätzlich zu den ASCII-Zeichen können Sie ab 2012 internationale Zeichen über U+007F
verwenden, die als UTF-8 kodiert sind, wie in der RFC 6532 spec beschrieben und auf Wikipedia erläutert. Beachten Sie, dass diese Standards ab 2019 immer noch als "Proposed" (vorgeschlagen) gekennzeichnet sind, aber langsam ausgerollt werden. Die Änderungen in dieser Spezifikation fügen im Wesentlichen internationale Zeichen als gültige alphanumerische Zeichen (atext) hinzu, ohne die Regeln für erlaubte & eingeschränkte Sonderzeichen wie !#
und @:
zu beeinflussen.
Zur Validierung siehe Verwendung eines regulären Ausdrucks zur Validierung einer E-Mail-Adresse.
Der Domain
-Teil ist wie folgt definiert:
Die Internet-Standards (Request for Comments) für Protokolle schreiben vor, dass Komponenten-Hostnamen nur die ASCII-Buchstaben a
bis z
(ohne Berücksichtigung der Groß- und Kleinschreibung), die Ziffern 0
bis 9
und den Bindestrich (-
) enthalten dürfen. Die ursprüngliche Spezifikation von Hostnamen in RFC 952 schrieb vor, dass Bezeichnungen nicht mit einer Ziffer oder einem Bindestrich beginnen und nicht mit einem Bindestrich enden durften. Eine spätere Spezifikation (RFC 1123) erlaubte jedoch, dass Hostnamenbezeichnungen mit Ziffern beginnen dürfen. Andere Symbole, Interpunktionszeichen oder Leerzeichen sind nicht erlaubt.
Wikipedia hat einen guten Artikel darüber, und die offizielle Spezifikation ist hier. Aus Wikipdia:
Der lokale Teil der E-Mail-Adresse kann jedes der folgenden ASCII-Zeichen verwenden:
- Zeichen ! # $ % & ' * + - / = ? ^ _ ` { | } ~
- Zeichen . (Punkt, Punkt, Punkt), sofern es nicht das erste oder letzte Zeichen ist und sofern es nicht zwei- oder mehrmals hintereinander vorkommt.
Darüber hinaus sind Zeichenketten in Anführungszeichen (z. B. "John Doe"@example.com) erlaubt, so dass Zeichen zulässig sind, die ansonsten verboten wären, in der Praxis aber nicht vorkommen. RFC 5321 warnt auch davor, dass "ein Host, der erwartet, Post zu empfangen, es vermeiden sollte, Postfächer zu definieren, bei denen der lokale Teil die Quoted-string-Form erfordert (oder verwendet)".
Sie können mit dem wikipedia-Artikel beginnen: