steckl: Format von Email-Adressen

Hallo,

ich habe ein Webprojekt, bei dem angemeldete User ihre Email-Adresse aendern koennen. Jetzt moechte ich noch eine Check-Funktion einbauen, die ueberprueft, ob die Adresse gueltig ist.

Eigentlich dachte ich, das waere ziemlich trivial, aber als ich dazu mal im Internet recherchiert habe war ich ziemlich erstaunt.

Bei Wikipedia steht zum Beispiel, dass folgende Zeichen im local-part erlaubt sind: A-Za-z0-9.!#$%&'*+-/=?^_`{|}~
Sind diese Zeichen wirklich alle gueltig?

Von einem Perlskript von Selfhtml werden Adressen, die beispielsweise eine #-Symbol enthalten, als ungueltig angesehen.

Jetzt wuerde mich interessieren, wie genau die Syntax von Emailadressen auszusehen hat und welche Sonderzeichen (und wie oft und wo) vorkommen duerfen.
Gibt es hierzu vielleicht irgendwelche brauchbaren (offiziellen) Links? Oder koennte ich hier vielleicht gleich das oben genannte Script von Selfhtml benutzen?

mfG,
steckl

  1. Hallo,

    inwieweit ist das Format relevant?
    mein.name@web.de ist vom Format her gültig aber nicht unbedingt auch zu erreichen, oder !?

    bydey

    --
    -- bydey ist die Signatur und Verabschiedung, nicht der Nick --
    -- Navigate all your PHP web projects with  PHP Project Browser--
    1. Hi,

      inwieweit ist das Format relevant?
      mein.name@web.de ist vom Format her gültig aber nicht unbedingt auch zu erreichen, oder !?

      Das mit der Erreichbarkeit ist wohl nicht so einfach zu ueberpruefen? Oder gibt es hierfuer eine zuverlaessige moeglichkeit (ausser eine Email hinzuschicken und auf eine Bestaetigung zu warten)?
      Ansonsten moechte ich zumindest so viele falsche Adressen wie moeglich ausschliessen koennen.

      mfG,
      steckl

      1. Hallo,

        Das mit der Erreichbarkeit ist wohl nicht so einfach zu ueberpruefen? Oder gibt es hierfuer eine zuverlaessige moeglichkeit (ausser eine Email hinzuschicken und auf eine Bestaetigung zu warten)?

        Ist wohl die einzig machbare und sinnvolle.

        Ansonsten moechte ich zumindest so viele falsche Adressen wie moeglich ausschliessen koennen.

        Wozu?
        blabla@bla
        "Bei der Überprüfung ihrer Daten ist festgestellt worden, dass Feld(er) falsch sind. Ihre Emailadresse ist falsch"
        Merde!
        Also merde@alleshumbug.co.uk
        Wo führt das hin?
        Willst du deine Daten absichern, scheint keine Methode wirklich zuverlässig.
        Willst den Benutzer vor einer falschen Eingabe schützen und hast jemanden mit einer extremen Ausnahme und der kann seine Adresse nun gar nicht eingeben, was dann? "Es tut mir sehr leid. Mit so einer Emailadresse kommst du nicht rein. Geh doch zu web.de und besorg dir eine kostenlose; die ist dann auch konform zu meinem Skript."?

        bydey

        --
        -- bydey ist die Signatur und Verabschiedung, nicht der Nick --
        -- Navigate all your PHP web projects with  PHP Project Browser--
      2. Hi,

        Das mit der Erreichbarkeit ist wohl nicht so einfach zu ueberpruefen? Oder gibt es hierfuer eine zuverlaessige moeglichkeit (ausser eine Email hinzuschicken und auf eine Bestaetigung zu warten)?

        es gibt in der Theorie die Möglichkeit, sich zum Mailserver zu verbinden und ihn zu fragen. In der Praxis taugt sie aber nichts, weil die Antwort keine Aussagekraft besitzt.

        Ansonsten moechte ich zumindest so viele falsche Adressen wie moeglich ausschliessen koennen.

        Behufs welchen Zweckes?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo steckl.

    ich habe ein Webprojekt, bei dem angemeldete User ihre Email-Adresse aendern koennen. Jetzt moechte ich noch eine Check-Funktion einbauen, die ueberprueft, ob die Adresse gueltig ist.

    Meine Check-Funktion.

    Einen schönen Montag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
  3. Hi,

    Bei Wikipedia steht zum Beispiel, dass folgende Zeichen im local-part erlaubt sind: A-Za-z0-9.!#$%&'*+-/=?^_`{|}~
    Sind diese Zeichen wirklich alle gueltig?

    ja, sind sie. Der bei Wikipedia nachfolgende Satz sollte ebenfalls beachtet werden: Selbst das @-Zeichen ist erlaubt. Der Localpart muss lediglich in Doublequotes stehen, oder man maskiert es einfach.

    Von einem Perlskript von Selfhtml werden Adressen, die beispielsweise eine #-Symbol enthalten, als ungueltig angesehen.

    Wie sieht es mit einem Perl-Script der perlfaq aus?

    Jetzt wuerde mich interessieren, wie genau die Syntax von Emailadressen auszusehen hat und welche Sonderzeichen (und wie oft und wo) vorkommen duerfen.

    Wenn Du hier im Archiv nach E-Mail-Prüfungen suchst, wirst Du eine Vielzahl kläglich gescheiterter Versuche finden. Einige davon sind komplexer, als Du es im Moment vermutlich erwartest. Die Quintessenz ist, entweder auf komplette RFC-Konformität zu prüfen (und damit weit mehr als nur einen Zehnzeiler zu benötigen), oder praktisch auf gar nichts. Bei allem dazwischen ist die Fehlerquote zu groß.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      Wenn Du hier im Archiv nach E-Mail-Prüfungen suchst, wirst Du eine Vielzahl kläglich gescheiterter Versuche finden. Einige davon sind komplexer, als Du es im Moment vermutlich erwartest. Die Quintessenz ist, entweder auf komplette RFC-Konformität zu prüfen (und damit weit mehr als nur einen Zehnzeiler zu benötigen), oder praktisch auf gar nichts. Bei allem dazwischen ist die Fehlerquote zu groß.

      Also lieber nichts pruefen, bevor man gueltige Adressen versehentlich nicht zulaesst?
      Eigentlich sollte der User seine Email-Adresse ja wirklich selber wissen, ich wollte das ganze nur noch etwas komfortabler machen und den User auf Leichtsinnsfehler aufmerksam machen, aber das ist wohl (falls ueberhaupt moeglich) mit zu viel Aufwand verbunden.

      mfG,
      steckl

      1. Hi,

        Also lieber nichts pruefen, bevor man gueltige Adressen versehentlich nicht zulaesst?

        genau. Bei allem anderen hast Du zu viele False Positives - übrigens auch bei RFC-konformer Prüfung, da - leider, leider! - eine Menge Adressen der Art "foo..bar@example.com" o.ä. in der Praxis herumschwirren.

        Eigentlich sollte der User seine Email-Adresse ja wirklich selber wissen, ich wollte das ganze nur noch etwas komfortabler machen und den User auf Leichtsinnsfehler aufmerksam machen, aber das ist wohl (falls ueberhaupt moeglich) mit zu viel Aufwand verbunden.

        Nun, Du kannst eine Warnung geben und den User bitten, seine Eingabe noch einmal zu überprüfen - und sie anschließend akzeptieren, selbst wenn sie Dir falsch erscheint. Standardfehler wie z.B. Whitespaces vor und hinter der Adresse solltest Du vorher selbst korrigieren.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. Hi,

        ich wollte das ganze nur noch etwas komfortabler machen und den User auf Leichtsinnsfehler aufmerksam machen, aber das ist wohl (falls ueberhaupt moeglich) mit zu viel Aufwand verbunden.

        kommt drauf an, wie genau Du prüfen willst. Es spricht mMn nichts dagegen, den User auf einige grundlegende Fehler hinzuweisen, insbesondere:

        • kein @
        • nach dem letzten @ kein .
        • nach dem letzten . nicht mindestens zwei Buchstaben
        • zwischen dem letzten @ und dem letzten . kein Inhalt

        Die gröbsten Flchtigkeitsfehler könnte das schon abfangen.

        freundliche Grüße
        Ingo

        1. Hallo Ingo,

          • kein @

          - kein .

          • nach dem letzten . nicht mindestens zwei Buchstaben

          Das geht - wenn der Hostname eine IP ist.

          Viele Grüße aus Freiburg,
          Marian

          --
          Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
          <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
          1. Hi,

            • nach dem letzten . nicht mindestens zwei Buchstaben
              Das geht - wenn der Hostname eine IP ist.

            stimmt zwar - aber ist Dir schonmal so eine Mail untergekommen?

            freundliche Grüße
            Ingo

            1. Hallo Ingo,

              • nach dem letzten . nicht mindestens zwei Buchstaben
                Das geht - wenn der Hostname eine IP ist.
                stimmt zwar - aber ist Dir schonmal so eine Mail untergekommen?

              Was nicht ist, kann ja noch werden. Und übrigens

              johannes@irgendwas

              ist auch eine gültige E-Mail-Adresse.

              Schöne Grüße,

              Johannes

              1. Hallo Johannes,

                stimmt zwar - aber ist Dir schonmal so eine Mail untergekommen?

                Nö.

                Was nicht ist, kann ja noch werden. Und übrigens

                johannes@irgendwas

                ist auch eine gültige E-Mail-Adresse.

                Sollte man aber nicht zulassen, da Domains ohne TLD nicht vergeben werden, und der einzige Hostname ohne TLD, der auf den meisten PCs verfügbar ist, "localhost" ist. Und den als E-Mail-Adresse anzugeben ist ja sinnfrei.

                Viele Grüße aus Freiburg,
                Marian

                --
                Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
                <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
                1. Hallo Marian,

                  johannes@irgendwas
                  Sollte man aber nicht zulassen, da Domains ohne TLD nicht vergeben werden, ...

                  das stimmt natürlich, aber ...

                  und der einzige Hostname ohne TLD, der auf den meisten PCs verfügbar ist, "localhost" ist. Und den als E-Mail-Adresse anzugeben ist ja sinnfrei.

                  Dem würde ich so nicht unbedingt zustimmen: In meinem eigenen heimischen LAN sind alle Maschinen auch über ihre internen Namen ansprechbar - ohne TLD. Wenn ich wollte, könnte ich dank internem Mailserver auch jeder Maschine interne Mailadressen zuordnen. Ich sehe das zwar auch nicht als so furchtbar sinnvoll an; in einem Firmennetzwerk mit eigenem Mailserver und internem Mailsystem mag das aber durchaus interessant sein (fritz.schulze@accounting, matze.mueller@research, sally.silver@sales).

                  Dass Mails mit solchen Adressen in der wilden weiten Welt des öffentlichen Internet nicht vorkommen dürften, ist aber auch klar.

                  Ciao,
                   Martin

                  --
                  Realität ist eine Illusion, die durch Unterversorgung des Körpers mit Alkohol entstehen kann.
              2. Hi,

                johannes@irgendwas

                ist auch eine gültige E-Mail-Adresse.

                ergänzend zu Marian: es geht hier ja nicht um Gültigkeitsprüfung, sondern um (Flüchtigkeits-)Fehler des Users abzufangen - und da kann leicht mal passieren, dass ein ".de" vergessen wird.

                freundliche Grüße
                Ingo

  4. Moin!

    Bei Spam Gourmet wird bei einer Änderung der E-Mail Adresse eine Mail mit Bestätigungslink geschickt. Finde ich ganz praktisch, da darüber verifiziert wird, daß die Adresse auch wirklich funktioniert. Stell Dir nur mal vor, Dein User macht beim Ändern der Adresse einen Fehler, merkt es nicht und drei Tage später hat er einen leichten Anfall von Amnesie und hat sein Passwort vergessen. Dem kannst Du nie wieder einen Link zur reaktivierung schicken.

    -- Skeeve