Welche Zeichen sind in einer E-Mail-Adresse erlaubt?
Ich verlange nicht, über die volle E-Mail-Validierung.
Ich möchte nur wissen, was sind die erlaubten Zeichen in user-name
und server
Teile der E-Mail-Adresse. Dies kann zu stark vereinfacht, vielleicht E-Mail-Adressen können andere Formen annehmen, aber das ist mir egal. Ich Frage nach nur diese einfache form: user-name@server
(z.B. [email protected]) und zulässige Zeichen in beiden teilen.
InformationsquelleAutor der Frage WildWezyr | 2010-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen RFC 5322: Internet Message Format und, in geringerem Maße, RFC 5321: Simple Mail Transfer Protocol.
RFC 822 deckt auch die E-Mail-Adressen, aber es befasst sich hauptsächlich mit der Struktur:
Und, wie immer, Wikipedia hat eine anständige Artikel über die E-Mail-Adressen:
Zusätzlich zu den ASCII-Zeichen, ab 2012 Sie können mit internationalen Zeichen oben
U+007F
Sat -als UTF-8.Zur Validierung, siehe Mit einem regulären Ausdruck für die Validierung einer E-Mail-Adresse.
Den
domain
Teil definiert ist wie folgt:InformationsquelleAutor der Antwort Anton Gogolev
Watch out! Es gibt eine Reihe von Wissens-rot in diesem thread (Zeug, das verwendet, um wahr zu sein und jetzt auch nicht).
Zur Vermeidung falsch-positiver Verwerfungen der eigentlichen E-Mail-Adressen der aktuellen und zukünftigen Welt, und Sie von überall in der Welt, müssen Sie wissen, zumindest die high-level-Konzept von RFC 3490"die Internationalisierung von Domain-Namen in Anwendungen (IDNA)". Ich weiß, dass die Leute in UNS und sind oft nicht auf diesem, aber es ist bereits in weit verbreitet, und die rasant zunehmende Nutzung auf der ganzen Welt (vor allem die nicht-Englisch-dominierte Teile).
Das wesentliche ist, dass Sie können jetzt Adressen wie mason@日本.com und wildwezyr@fahrvergnügen.net. Nein, dies ist noch nicht kompatibel mit alles gibt (so viele haben sich beklagt über, auch einfache qmail-Stil +ident-Adressen werden oft fälschlicherweise abgelehnt). Aber es gibt ein RFC eine Spezifikation, es ist jetzt gesichert durch die IETF und ICANN, und--noch wichtiger--es gibt eine große und wachsende Zahl von Implementierungen unterstützen diese Verbesserung, die derzeit in Dienst.
Ich wusste nicht viel über diese Entwicklung mir, bis ich zog nach Japan zurück und begann, E-Mail-Adressen wie hei@やる.ca und Amazon-URLs wie diese:
http://www.amazon.co.jp/エレクトロニクス-デジタルカメラ-ポータブルオーディオ/b/ref=topnav_storetab_e?ie=UTF8&node=3210981
Ich weiß, Sie wollen nicht links zu specs, aber wenn Sie verlassen sich ausschließlich auf das veraltete wissen von Hackern auf Internet-Foren, Ihre E-Mail-Bestätigung wird am Ende die Ablehnung E-Mail-Adressen, die nicht-Englisch-Benutzer erwarten zunehmend, um zu arbeiten. Für jene Benutzer, die eine solche Validierung wird genauso nervig wie die alltäglich Gehirn-tote form, die wir alle hassen, die nicht mit einem + oder einem dreiteiligen domain-Namen oder was auch immer.
So, ich sage nicht, dass es nicht ein Streit, sondern die vollständige Liste der Zeichen "erlaubt unter some/any/none Voraussetzungen" (fast) alle Zeichen in allen Sprachen. Wenn Sie auf "akzeptieren alle gültigen email-Adressen (und viele ungültig zu)" dann müssen Sie IDN berücksichtigt, die im Grunde macht ein Charakter-basierte Ansatz unbrauchbar (sorry), es sei denn, Sie zuerst konvertieren Sie die internationalisierte E-Mail-Adressen zu Punycode.
Nachdem ich, dass Sie Folgen können die (meisten) genannten Ratschläge.
InformationsquelleAutor der Antwort Mason
Wikipedia hat einen guten Artikel über diesesund die offizielle spec ist hier. Aus Wikipdia:
InformationsquelleAutor der Antwort Mike Weller
Das format der e-mail-Adresse ist:
local-part@domain-part
(max. 64@255 Zeichen, nicht mehr auf insgesamt 256).Den
local-part
unddomain-part
könnten unterschiedliche Menge der zulässigen Zeichen, aber das ist nicht alles, denn es gibt mehr Regeln.Im Allgemeinen, den lokalen Teil kann diese ASCII-Zeichen:
abcdefghijklmnopqrstuvwxyz
,ABCDEFGHIJKLMNOPQRSTUVWXYZ
,0123456789
,!#$%&'*+-/=?^_`{|}~
,.
(nicht das erste oder Letzte Zeichen oder wiederholt werden, soweit nicht zitiert),"(),:;<>@[\]
(mit einigen Einschränkungen),()
(erlaubt sind in Klammern gesetzt werden, z.B.(comment)[email protected]
).Domain-Teil:
abcdefghijklmnopqrstuvwxyz
,ABCDEFGHIJKLMNOPQRSTUVWXYZ
,0123456789
,-
(nicht das erste oder Letzte Zeichen),jsmith@[192.168.2.1]
oderjsmith@[IPv6:2001:db8::1]
.Diese e-mail-Adressen sind gültig:
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
(ein-Buchstaben-lokaler Teil)"much.more unusual"@example.com
"[email protected]"@example.com
"very.(),:;<>[]\".VERY.\"very@\ \"very\".unusual"@strange.example.com
[email protected]
admin@mailserver1
(local domain Namen ohne die top-level-domain)#!$%&'*+-/=?^_`{}|[email protected]
"()<>[]:,;@\\"!#$%&'-/=?^_`{}| ~.a"@example.org
" "@example.org
(Leerzeichen zwischen den Anführungszeichen)example@localhost
(gesendet vom localhost)[email protected]
(siehe Liste der Internet-top-level-domains)user@com
user@localserver
user@[IPv6:2001:db8::1]
Diese Beispiele für ungültige:
Abc.example.com
(keine@
Charakter)A@b@[email protected]
(nur eine@
erlaubt ist, die außerhalb Anführungszeichen)a"b(c)d,e:f;gi[j\k][email protected]
(keine Sonderzeichen in diesem lokalen Teil erlaubt sind, die außerhalb Anführungszeichen)just"not"[email protected]
(Zeichenketten in Anführungszeichen müssen durch Punkt getrennte oder das einzige element der lokale Teil)this is"not\[email protected]
(Leerzeichen, Anführungszeichen und umgekehrte Schrägstriche können nur existieren, wenn innerhalb von Zeichenfolgen, und mit vorangestelltem backslash)this\ still\"not\[email protected]
(auch wenn escaped " (mit vorangestelltem backslash), Leerzeichen, Anführungszeichen und umgekehrte Schrägstriche müssen noch enthaltenen Zitate)[email protected]
(Doppel Punkt vor@
); (mit VORBEHALT: Gmail lässt diese durch)[email protected]
(Doppel-Punkt nach@
)Quelle: E-Mail-Adresse bei Wikipedia
Perl-RFC2822-regex für die überprüfung von E-Mails:
Siehe auch: RFC 822 E-Mail-Adresse-Parser in PHP.
Den formalen Definitionen von e-mail-Adressen befinden sich in:
Verwandte:
InformationsquelleAutor der Antwort kenorb
Name:
Server:
InformationsquelleAutor der Antwort ThinkingStiff
Können Sie beginnen aus wikipedia-Artikel:
InformationsquelleAutor der Antwort Vladimir
Google eine interessante Sache mit Ihrer gmail.com -Adressen.
gmail.com Adressen erlauben nur Buchstaben (a-z), Ziffern und Punkte(die werden ignoriert).
z.B., [email protected] ist das gleiche wie [email protected] und beide E-Mail-Adressen gesendet werden an das gleiche Postfach. [email protected] wird auch geliefert, um das gleiche Postfach.
Also um die Frage zu beantworten, manchmal kommt es auf die Durchführung an, wie viel von den RFC-standards, die Sie Folgen möchten. Google gmail.com Adresse Stil ist kompatibel mit den standards. Sie tun es auf diese Weise Verwirrung zu vermeiden, wenn verschiedene Menschen nehmen würde, ähnlich wie E-Mail-Adressen z.B.
Den wikipedia-link ist eine gute Referenz, auf welche E-Mail-Adressen in der Regel zulassen.
http://en.wikipedia.org/wiki/Email_address
InformationsquelleAutor der Antwort Angel Koh
Check für @ und . und dann schicken Sie eine E-Mail für Sie zu überprüfen.
Ich kann immer noch nicht mit meiner .name E-Mail-Adresse auf 20% der Websites im internet, weil jemand vermasselt Ihre E-Mail-Bestätigung, oder weil es älter als die neuen Adressen gültig.
InformationsquelleAutor der Antwort Richard Maxwell
Die kurze Antwort ist, dass es 2 Antworten. Es gibt einen standard für das, was Sie tun sollten. ie Verhalten, dass Sie klug und halten Sie aus der Patsche. Es gibt einen anderen (viel breiter) - standard für das Verhalten sollte man akzeptieren, ohne Probleme. Diese Dualität funktioniert für den Versand und die Annahme von E-Mail, aber hat Breite Anwendung im Leben.
Für eine gute Anleitung für die Adressen, die Sie erstellen können, finden Sie unter: http://www.remote.org/jochen/mail/info/chars.html
Filter gültige E-Mails, nur pass auf, alles verständlich genug, um zu sehen, einen nächsten Schritt.
Oder starten Sie Lesen eine Reihe von RFCs, Vorsicht, hier werden Drachen.
InformationsquelleAutor der Antwort Michael JAMES
Einen guten read auf den egal.
Auszug:
InformationsquelleAutor der Antwort Luke Madhanga
Wie können gefunden werden in dieser Wikipedia-link
InformationsquelleAutor der Antwort Yash Patel
Akzeptierte Antwort bezieht sich auf ein Wikipedia-Artikel bei der Erörterung der gültigen local-part einer E-Mail-Adresse, aber Wikipedia ist nicht eine Autorität auf diesem.
IETF RFC 3696 ist eine Behörde auf diese Angelegenheit und sollte konsultiert werden in Abschnitt 3. Einschränkung der E-Mail-Adressen auf Seite 5:
Als andere getan haben, ich behaupte, dass ein regex für PHP und JavaScript zum validieren von E-Mail-Adressen:
InformationsquelleAutor der Antwort Mac
Die Antwort ist (fast)
ALL
(7-bit-ASCII).Wenn die Aufnahme-Regeln "...dürfen Sie unter some/any/none Voraussetzungen..."
Einfach durch einen Blick auf eine von mehreren möglichen Aufnahme-Regeln für erlaubte text in der "domain-text" - Teil in RFC 5322 Sie oben auf der Seite 17 finden wir:
nur drei fehlenden chars in dieser Beschreibung verwendet werden, in domain-literal
[]
zu einem " quoted-pair\
und die white-space-Zeichen(%d32). Mit, dass das gesamte Spektrum 32-126 (dezimal) verwendet. Eine ähnliche Forderung angezeigt als "qtext" und "ctext". Viele control-Zeichen sind auch erlaubt/verwendet. Eine Liste der steuerzeichen wird im Seite 31 Abschnitt 4.1 RFC 5322 als obs-KEINE-WS-CTL.
Alle diese steuerzeichen sind erlaubt, wie bereits zu Beginn von Abschnitt 3.5:
Ist und eine solche Eingliederung Regel ist deshalb "einfach zu weit". Oder, in einem anderen Sinne, der erwarteten Regel "zu simpel".
InformationsquelleAutor der Antwort
In meinem PHP ich diese Prüfung
versuchen Sie es selbst http://phpfiddle.org/main/code/9av6-d10r
InformationsquelleAutor der Antwort Yevgeniy Afanasyev
Habe ich diese regex nach RFC-Richtlinien:
InformationsquelleAutor der Antwort Mau
Für Interessierte, die Validierung von internationalen domains, es ist ein .NET-tool finden Sie hier (nicht in Verbindung mit dem Unternehmen):
http://cobisi.com/email-validation/.net-component
- kompatibel mit einer langen Liste von RFCs:
InformationsquelleAutor der Antwort Sha
Gmail erlaubt nur das + - Zeichen als Sonderzeichen, und in einigen Fällen (.) aber alle anderen Sonderzeichen sind nicht erlaubt bei Gmail. RFC ' s sagt, dass Sie können Sonderzeichen verwenden, aber Sie sollten es vermeiden, senden von E-mail zu Gmail mit Sonderzeichen.
InformationsquelleAutor der Antwort Mohammed
Einfachheitshalber, ich desinfizieren Sie die Vorlage, indem Sie alle text innerhalb von doppelten Anführungszeichen und die umgebenden Anführungszeichen vor der Validierung, Inbetriebnahme des kibosh auf E-Mail-Adresse Einsendungen basiert auf dem, was nicht zulässig ist. Nur weil jemand haben kann, der John.."*$hizzle*Bizzle"[email protected] Adresse bedeutet nicht, dass ich zulassen, dass es in meinem system. Wir Leben in der Zukunft, wo es vielleicht weniger Zeit in Anspruch nimmt, um eine Kostenlose E-Mail-Adresse als zu tun, einen guten job, wischte sich Ihren po. Und es ist nicht so, wenn die E-Mail-Kriterien sind nicht verputzt, rechts neben dem Eingang, der sagt, was ist erlaubt und welche nicht erlaubt.
Ich auch desinfizieren, was ist ausdrücklich nicht gestattet, die von verschiedenen RFCs nach dem zitierten material entfernt wird. Die Liste der speziell unzulässigen Zeichen und Muster zu sein scheint, eine viel kürzere Liste zu testen.
Nicht zulässig:
In dem Beispiel gegeben:
Senden einer E-Mail bestätigen-Nachricht an die übrig gebliebenen Ergebnis bei einem Versuch, hinzufügen oder ändern Sie die E-Mail-Adresse ist ein guter Weg, um zu sehen, ob Ihr code verarbeiten kann, die E-Mail-Adresse übermittelt. Wenn die E-Mail-Validierung weiterleitet, nach wie vielen Runden der Bereinigung als notwendig, dann Feuer aus, dass die Bestätigung. Wenn eine Anfrage kommt zurück aus den Bestätigungs-link, dann die neue E-Mail verschoben werden können, aus dem Betrieb||temporär||Fegefeuer status oder Lagerung eine echte, bonafide erste-Klasse gespeicherten E-Mails.
Einer Meldung der E-Mail-Adresse ändern, Versagen oder Erfolg können Sie an die alte E-Mail-Adresse, wenn Sie möchten, Rücksicht zu nehmen. Unbestätigten Konto-setups fallen aus dem system heraus als Fehlversuche ganz nach einer angemessenen Höhe der Zeit.
Ich nicht zulassen stinkhole E-Mails auf meinem system, vielleicht ist das auch nur werfen Geld Weg. Aber, 99,9% der Zeit, die Menschen nur das richtige tun und haben eine E-Mail, keine push-Konformität Grenzwerte an den Rand Verwendung Grenzfall der Kompatibilität Szenarien. Seien Sie vorsichtig, der regex DDoS, das ist ein Ort, wo können Sie in Schwierigkeiten geraten. Und dies ist in Bezug auf die Dritte Sache, die ich mache, setze ich ein limit, wie lange ich bereit bin, zu verarbeiten, eine E-Mail. Wenn es braucht, um langsam nach unten meine Maschine zu bekommen validiert-es ist nicht immer vorbei, die meine eingehenden-Daten-API-Endpunkt-Logik.
Edit: Diese Antwort hatten immer dinged als "schlecht", und vielleicht es es auch verdient. Vielleicht ist es immer noch schlecht, vielleicht auch nicht.
InformationsquelleAutor der Antwort BradChesney79