eMail-Adressen-Validierung

Hag2bard

Bekanntes Mitglied
Hallo,

ich möchte eine eMail-Validierung programmieren.
Derzeit nutze ich javax.mail.internet.InternetAddress#validate.

Da ich das ganze aber selber realisieren möchte, wüsste ich gerne, wie ich dies am besten umsetze.
Gibt es irgendwo Bedingungen für eine gültige eMail Adresse mit deren Hilfe ich meine Implementierung umsetzen kann?
 
Da schauen wir einfach mal, was wir da so finden:

Guter Einstiegspunkt wie immer: Wikipedia: Email address - Wikipedia

Und da finden sich dann die Links zu den RFCs, die da wichtig sind: 5322 und 6854

Bei der 5322 findet sich dann in 3.4.1 die folgende Spezifikation:
addr-spec = local-part "@" domain

local-part = dot-atom / quoted-string / obs-local-part

domain = dot-atom / domain-literal / obs-domain

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]

dtext = %d33-90 / ; Printable US-ASCII
%d94-126 / ; characters not including
obs-dtext ; "[", "]", or "\"
 
addr-spec = local-part "@" domain

local-part = dot-atom / quoted-string / obs-local-part

domain = dot-atom / domain-literal / obs-domain

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]

dtext = %d33-90 / ; Printable US-ASCII
%d94-126 / ; characters not including
obs-dtext ; "[", "]", or "\"
Kannst du das erklären?
Ich kann mit der Syntax nichts anfangen.
 
Du musst es als Objekt-Konkatenierung mut Zuweisung lesen.

Also eine E-Mail Adresse (addr.spec) setzt sich zusamen aus local-part gefolgt von einem @ gefolgt von domain. local-part wiederum ist entweder ein dot-atom oder ein quoted-string oder ein obs-local-part. Und immer so weiter bis auf der untersten definierten Ebene angekommen bist.

Validieren von E-Mail Adressen ist ohnehin schwer, denn wenn ich mich richtig erinnere is .@someplace eine valide E-Mail Adresse laut Spezifikation. Daher wird bei vielen einfach nur kontrolliert ob die E-Mail Adresse nur ein "@" enthaelt und ob dieses weder das erste noch das letzte Zeichen ist. Dann wird eine E-Mail an die Adresse geschickt.
 
Der mMn sinnvollste Weg ist, "Validierung" nur im Frontend zu machen, und dazu auch nicht wirklich validieren sondern nur prüfen ob die Mail "üblich" aussieht und dem Nutzer andernfalls einen Hinweis anzuzeigen - verringert zumindest die Wahrscheinlichkeit von dummen Tippfehlern.

Um wirklich zu testen, ob eine Mail zumindest in irgendeiner Art und Weise existiert, muss man so oder so einen Mail schicken und eine Antwort in irgendeiner Form erwarten, zB URL mit eindeutigem Token, die der Nutzer öffnen soll. Aber selbst das ist nur ein "zu diesem Zeitpunkt konnte unter der Adresse was empfangen werden", kann ab dann ja trotzdem ungültig sein.
 
addr-spec = local-part "@" domain

local-part = dot-atom / quoted-string / obs-local-part

domain = dot-atom / domain-literal / obs-domain

domain-literal = [CFWS] "[" *([FWS] dtext) [FWS] "]" [CFWS]

dtext = %d33-90 / ; Printable US-ASCII
%d94-126 / ; characters not including
obs-dtext ; "[", "]", or "\"
Kannst du das erklären?
Ich kann mit der Syntax nichts anfangen.


Edit: Das Thema ist nicht mehr aktuell, scheinbar hat mein Handy ein Entwurf gespeichert und gerade versehentlich doch erstellt.
 
Kannst du das erklären?
Ich kann mit der Syntax nichts anfangen.

Die Syntax ist:

Code:
NAME = DEFINITION

Also addr-spec ist definiert als local-part "@" domain, setzt sich also aus local-part und domain zusammen mit einem buchstaeblichen "@" dazwischen. local-part besteht entweder aus dot-atom, oder quoted-string oder obs-local-part, und so weiter und so weiter.
 

Zurück
Oben