856 Stimmen

Welche Zeichen sind in einer E-Mail-Adresse erlaubt?

Ich frage nicht nach einer vollständigen E-Mail-Validierung.

Ich möchte nur wissen, welche Zeichen in user-name y server Teile der E-Mail Adresse. 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: user-name@server (z. B. wild.wezyr@best-server-ever.com) und erlaubte Zeichen in beiden Teilen.

267 Stimmen

Le site + erlaubt ist. Es macht mich wahnsinnig, wenn Websites dies nicht zulassen, weil meine E-Mail eine + und viele Websites erlauben dies nicht.

0 Stimmen

Ich habe gerade ein Kopfgeld ausgesetzt. Es gibt bereits gute Antworten, aber sie erklären nicht, welche Zeichen im Serverteil der E-Mail-Adresse erlaubt sind. Ich werde eine vollständige Antwort auf meine Fragen akzeptieren (Benutzername und Serverteil erklärt).

0 Stimmen

Vielleicht auch RFC2821 und RFC2822 .

4voto

Luke Madhanga Punkte 5287

Eine gute Lektüre über die Materie .

Auszug:

These are all valid email addresses!

"Abc\@def"@example.com
"Fred Bloggs"@example.com
"Joe\\Blow"@example.com
"Abc@def"@example.com
customer/department=shipping@example.com
\$A12345@example.com
!def!xyz%abc@example.com
_somename@example.com

1 Stimmen

Ich habe mich über das "@" vor dem Domänenteil gewundert. Kann das verwendet werden?

0 Stimmen

@SaiyaffFarouk gemäß der Spezifikation, ja. Allerdings werden die meisten E-Mail-Anbieter dies wahrscheinlich nicht als Teil ihrer eigenen Validierung zulassen

0 Stimmen

Dieser Blog listet Joe.\\Blow@example.com ohne Anführungszeichen. Ist dies tatsächlich gültig? Es scheint angesichts der Antworten hier nicht klar zu sein, aber ich frage, weil ich (sehr seltene) Fälle von DNS SoA rname E-Mail-Strings gesehen habe, die Backslashes enthalten.

-1voto

Yash Patel Punkte 96

Wie man in dieser Wikipedia-Link

Der lokale Teil der E-Mail-Adresse kann jedes dieser ASCII-Zeichen verwenden:

  • lateinische Groß- und Kleinbuchstaben A a Z y a a z ;

  • Ziffern 0 a 9 ;

  • Sonderzeichen !#$%&'*+-/=?^_`{|}~ ;

  • Punkt . sofern es nicht das erste oder letzte Zeichen ist, es sei denn, es wird zitiert, und sofern es nicht fortlaufend erscheint, es sei denn, es wird zitiert (z. B. John..Doe@example.com ist nicht erlaubt, aber "John..Doe"@example.com ist erlaubt);

  • Raum und "(),:;<>@[\] Zeichen 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. john.smith(comment)@example.com y (comment)john.smith@example.com sind beide gleichwertig mit john.smith@example.com .

Zusätzlich zu den oben genannten ASCII-Zeichen sind internationale Zeichen über U+007F, kodiert als UTF-8, erlaubt durch RFC 6531 Allerdings können Mailsysteme die zu verwendenden Zeichen bei der Zuweisung von Lokalteilen einschränken.

Eine Zeichenkette in Anführungszeichen kann als durch einen Punkt getrennte Einheit innerhalb des Lokalteils existieren, oder sie kann existieren, wenn die äußersten Anführungszeichen die äußersten Zeichen des Lokalteils sind (z. B., abc."defghi".xyz@example.com o "abcdefghixyz"@example.com sind erlaubt. Umgekehrt, abc"defghi"xyz@example.com ist nicht; ebenso wenig ist abc\"def\"ghi@example.com ). In Anführungszeichen gesetzte Zeichenketten und Zeichen werden jedoch in der Regel nicht verwendet. RFC 5321 warnt auch davor, dass "ein Host, der erwartet, Post zu empfangen, es vermeiden sollte, Postfächer zu definieren, bei denen der Local-Teil die Quoted-string-Form erfordert (oder verwendet)".

Der Lokalteil postmaster wird besonders behandelt - Groß- und Kleinschreibung wird nicht unterschieden - und sollte an den E-Mail-Administrator der Domäne weitergeleitet werden. Technisch gesehen wird bei allen anderen lokalen Teilen die Groß- und Kleinschreibung beachtet, daher jsmith@example.com et JSmith@example.com unterschiedliche Mailboxen angeben; viele Organisationen behandeln jedoch Groß- und Kleinbuchstaben als gleichwertig.

Trotz des breiten Spektrums an Sonderzeichen, die technisch zulässig sind, akzeptieren Organisationen, E-Mail-Dienste, E-Mail-Server und E-Mail-Clients in der Praxis oft nicht alle. Windows Live Hotmail zum Beispiel erlaubt nur die Erstellung von E-Mail-Adressen mit alphanumerischen Zeichen, Punkt ( . ), Unterstrich ( _ ) und Bindestrich ( - ). Es wird allgemein empfohlen, einige Sonderzeichen zu vermeiden, um das Risiko von zurückgewiesenen E-Mails zu vermeiden.

-1voto

Die Antwort lautet (fast) ALL (7-Bit-ASCII).
Wenn die Einbeziehungsregeln lauten "...unter einigen/allen/keinen Bedingungen erlaubt..."

Es genügt ein Blick auf eine von mehreren möglichen Einschlussregeln für zulässigen Text im Teil "Domaintext" in RFC 5322 oben auf Seite 17 finden wir:

dtext          =   %d33-90 /          ; Printable US-ASCII
                   %d94-126 /         ;  characters not including
                   obs-dtext          ;  "[", "]", or "\"

die einzigen drei fehlenden Zeichen in dieser Beschreibung werden in Domain-Literalen verwendet [] um ein quotiertes Paar zu bilden \ und das Leerzeichen (%d32). Damit wird der gesamte Bereich 32-126 (dezimal) verwendet. Eine ähnliche Anforderung stellen "qtext" und "ctext" dar. Viele Steuerzeichen sind ebenfalls erlaubt/verwendet. Eine Liste solcher Steuerzeichen findet sich auf Seite 31 Abschnitt 4.1 von RFC 5322 als obs-NO-WS-CTL.

obs-NO-WS-CTL  =   %d1-8 /            ; US-ASCII control
                   %d11 /             ;  characters that do not
                   %d12 /             ;  include the carriage
                   %d14-31 /          ;  return, line feed, and
                   %d127              ;  white space characters

Alle diese Steuerzeichen sind zulässig, wie am Anfang von Abschnitt 3.5 angegeben:

.... MAY be used, the use of US-ASCII control characters (values
     1 through 8, 11, 12, and 14 through 31) is discouraged ....

Und eine solche Einbeziehungsregel ist daher "einfach zu weit gefasst". Oder anders ausgedrückt: Die erwartete Regel ist "zu simpel".

-2voto

Yevgeniy Afanasyev Punkte 32229

In meinem PHP verwende ich diese Prüfung

<?php
if (preg_match(
'/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/',
"tim'qqq@gmail.com"        
)){
    echo "legit email";
} else {
    echo "NOT legit email";
}
?>

Versuchen Sie es selbst http://phpfiddle.org/main/code/9av6-d10r

-3voto

Mau Punkte 17

Ich habe diese Regex gemäß den RFC-Richtlinien erstellt:

^[\\w\\.\\!_\\%#\\$\\&\\'=\\?\\*\\+\\-\\/\\^\\`\\{\\|\\}\\~]+@(?:\\w+\\.(?:\\w+\\-?)*)+$

1 Stimmen

Diese Version verbessert die Regex, indem sie die Länge von Domänen/Subdomänen überprüft. Viel Spaß! ^[ \\w\\.\\ !_ \\ %# \\ $ \\ & \\ '= \\ ?\* \\ + \\ - \\ / \\ ^\` \\ { \\ | \\ } \\ ~]+@(?:[ \\w ](?:[ \\w\\ -]{0,61}[ \\w ])?(?: \\. [\ \w ](?:[ \\w\\ -]{0,61}[ \\w ])?)*)$

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X