Hi,
Es soll ja anscheinend nicht mal einen passenden RegExp geben um den korrekten Aufbau einer eMail-Adresse zu prüfen.
die Syntax ist natürlich durchaus definiert :-)
Naja, in der RFC822 (ist die überhaupt noch aktuell?)
Die Mail-RFCs um Nr. 822 sind jetzt alle um 2000 aktueller; aber in RFC 2822 steht meines Wissens auch nichts spektakulär neues drin ;-) zumindest was den Aufbau von Mailadresse betrifft.
Ich breche hier mal ab - man sieht, dass das ganze Gebilde von Mailadressenkomponenten ziemlich komplex werden kann.
Ja. Unter anderem ist
"Ich mag #Special Ch@racters# im Localpart!"@teamone.de
ebenfalls (IIRC) technisch korrekt... Ich wette, die meisten Scripts würden das ablehnen.
Daraus folgt: Der Domainteil kann (jedenfalls laut RFC) praktisch beliebig aussehen. Sicher ist nur, dass er Punkte enthält, und sonstige Zeichen.
Wenn man sich auf DNS-kompatible Hostnamen beschränken möchte, wird die Sache ein wenig einfacher. n Segmente (n>=2), die jeweils Buchstaben, Ziffern und den Bindestrich enthalten sowie maximal 127 Zeichen lang sind, durch Punkt voneinander getrennt. Wenn das letzte Segment nicht zufällig "invalid" lautet, muss[1] es eine gültige Top-Level-Domain sein; die davor notierte Subdomain muss im zugehörigen System registriert sein; der gesamte Hostname muss von einem DNS-Server korrekt beantwortet werden.
[1] Wobei ich momentan nicht hundertprozentig sicher bin, wie es mit IP-Adressen aussieht.
Deutlich werden soll eigentlich nur, dass es sehr sehr aufwendig ist, einen _vollständigen_ Algorithmus zu entwickeln, welcher gemäß RFC 822 gültige Mailadressen ermittelt. Alle Programme, die es gibt, werden mit an Sicherheit grenzender Wahrscheinlichkeit nur eine kleinere Untermenge an Variationen unterstützen - und damit prima funktionieren. Das bedeutet aber dummerweise für die Mailadressen, dass man kaum sagen kann, ob eine konkrete Mailadresse existiert, weil man die Möglichkeiten des Mailservers nicht kennt.
Richtig. So sind "bla..blub@teamone.de" und "bla.@teamone.de" beispielsweise ungültig...
Das ist in der Tat eine ziemlich genaue Nachbildung der RFC822. Und du siehst, wieviel Aufwand das ist. Vermutlich wird auch enorm viel Performance verbraten, um Mailadressen auf diese Weise zu prüfen.
Ja - selbst wenn man auf die Prüfung der Existenz des Hostes verzichtet.
Im Kommentar steht "define regex for nearly RFC 822 email address". Also geh ich mal davon aus, daß der Ausdruck ein paar eMail-Adressen zu viel durchlässt, die meisten aber richtig erkennt bzw. abweist.
Ich nehme an, dass vor allem die "alten" Systeme (Mailbox usw.), die heutzutage "im Internet nichts verloren haben", als ungültig definiert. Der Rest sollte eigentlich vollkommen RFC-konform sein.
Insbesondere kann man sich ja locker gültige Mailadressen ausdenken, die dennoch nicht existieren. Oder die tatsächlich existieren, einem aber nicht gehören.
Oh ja. Ich habe beispielsweise ein Mail-Account, welches bevorzugt für irgendwelche Anmeldungen missbraucht wird... häufig von Leuten, die sich dazu passend "das Web" nennen. Meine Filter-Liste ist mittlerweile legendär und könnte, selbst ohne Kommentare, ein Buch füllen; wenn auch nur eines der Stärke von "kulinarische Meisterwerke der britischen Küche".
Gegen dumme Tippfehler hilft der Check auf "@". Gegen Manipulation nur Double-Opt-In (also Aktionen erst nach einer Antwort auf eine Mail zu veranlassen).
Ja.
Cheatah