Berlinn: Adresse der Email prüfen

Guten morgen,

ich brauche mal euer Fachwissen zur Mailadressenüberprüfung!
Zurzeit prüfe ich die Emailadressen mittels Function und Regex;

$mailpruefen = '§[\w-.]{1,}@[\w-]{3,}.[\w-]{2,4}§';

Jetzt möchte ich aber auch die eingaben von Ausländische Adressen (andere Zeichensätze) prüfen lassen, z.B. russische Schriftzeichen falls es so etwas als Adresse überhaupt gibt!
Wenn ja wie stelle ich die Regex dementsprechend um oder geht das nicht hiermit???

Danke für eure antwort!

MfG

Berlinn

  1. Hallo,

    ich brauche mal euer Fachwissen zur Mailadressenüberprüfung!
    Zurzeit prüfe ich die Emailadressen mittels Function und Regex;

    $mailpruefen = '§[\w-.]{1,}@[\w-]{3,}.[\w-]{2,4}§';

    :-)

    Schau' Dir den RFC822-Matcher von Tom Christiansen an.

    Jetzt möchte ich aber auch die eingaben von Ausländische Adressen (andere Zeichensätze) prüfen lassen, z.B. russische Schriftzeichen falls es so etwas als Adresse überhaupt gibt!

    selbstverständlich sind diese in E-Mail-Adressen erlaubt, nur nicht an jeder Stelle.

    Wenn ja wie stelle ich die Regex dementsprechend um oder geht das nicht hiermit???

    Ich verweise bei diesem Thema am liebsten auf den Weblog-Artikel Validierung von eMail-Adressen im Selfforumssieb und den dortigen weiterführenden Links.

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      ich empfinde die Prüfung von Mailadressen vollkommen unsinnig.

      Wenn ich mich z.B. in ein Gästebuch eitrage, wird meistens eine E-Mail verlangt. Was weiss denn ich, was damit geschieht?

      Für Menschen lesbar gebe ich ein: osmer.kh bei gmx.de

      Das wird aber abgelehnt. Dann gebe ich ein: unsinn@web.de

      Das wird akzeptiert.

      Also erzähle mir keiner was von Adressprüfung.

      Kalle

      1. Hallo Kalle,

        ich empfinde die Prüfung von Mailadressen vollkommen unsinnig.

        wenn eine E-Mail-Adresse benötigt wird, weil etwas (zum Beispiel ein Freischaltcode, ein Bestätigungslink, ...) an diese E-Mail-Adresse geschickt werden soll, dann ist eine Prüfung (auf das zumindest notwendige) durchaus sinnvoll.

        [...]

        Für Menschen lesbar gebe ich ein: osmer.kh bei gmx.de

        in Deinem Beispiel ausreichend, in meinen Beispielen unsinnig.

        Das wird aber abgelehnt. Dann gebe ich ein: unsinn@web.de
        Das wird akzeptiert.
        Also erzähle mir keiner was von Adressprüfung.

        Ja,  genau dies findest Du ebenfalls im von mir verlinkten Weblog-Artikel. Wegen der vielen angesprochenen Facetten, finde ich ihn so lesenswert - nicht weil dort stünde: "So geht's!"

        Freundliche Grüße

        Vinzenz

        1. Hallo Vinzenz Mai und Kalle_B,

          erst einmal danke für eure antwort!!!
          Ich werde mir die links von Vinzenz Mai heute Abend in ruhe zu genüge führen und mich dann morgen noch mal bei euch melden!

          MfG

          Berlinn

          1. Das liest man gerne :) dennoch hättest du das auch im entsprechenden Beitrag machen können, offen ist er ja noch. Siehe: Keine Doppelpostings.

            »»

            Hi suit,

            da hast du vollkommen recht mit!!!
            Ich habe nur gedacht, der ältere Beitrag steht so weit unten, denn könnte man leicht übersehen und deswegen habe ich einen neuen kreiert!
            Bitte deswegen nicht schlagen!!! ;-)

            M f G

            Berlinn

        2. Hallo Vinzenz,

          wenn eine E-Mail-Adresse benötigt wird, weil etwas (zum Beispiel ein Freischaltcode, ein Bestätigungslink, ...) an diese E-Mail-Adresse geschickt werden soll, dann ist eine Prüfung (auf das zumindest notwendige) durchaus sinnvoll.

          Gut, du hoffst darauf, dass jemand die [@]-Taste nicht gefunden hat, aber musst blind glauben, dass er meyer heisst und nicht meier oder maier.

          Klasse Prüfung ;-)

          PHP bietet doch eine Prüfung an, reicht die nicht?
          $gesendet = mail( 'unsinn@web.de', $subject, $txt, $header );

          Lieben Gruß, Kalle

          1. Ach Kalle,

            Gut, du hoffst darauf, dass jemand die [@]-Taste nicht gefunden hat, aber musst blind glauben, dass er meyer heisst und nicht meier oder maier.

            woraus folgerst Du diesen blühenden Unsinn?

            Klasse Prüfung ;-)

            Würdest Du bitte *endlich* den verlinkten Artikel lesen!

            PHP bietet doch eine Prüfung an, reicht die nicht?
            $gesendet = mail( 'unsinn@web.de', $subject, $txt, $header );

            Nein. Erstens ist sowohl die Validierung von Eingaben als auch die kontextgerechte Aufbereitung (nicht nur) von Eingabewerten für die Ausgabe eine grundsätzliche Notwendigkeit. Die Schwierigkeiten bei der Validierung einer E-Mail-Adresse und das dazugehörende werden im Artikel wunderbar angesprochen.

            Deinem Miniansatz fehlt die Aufbereitung für den E-Mail-Kontext, die Dir selbst neulich Schwierigkeiten bereitete.

            Freundliche Grüße

            Vinzenz

            1. Hallo,

              »» PHP bietet doch eine Prüfung an, reicht die nicht?
              »» $gesendet = mail( 'unsinn@web.de', $subject, $txt, $header );
              Nein. Erstens ist sowohl die Validierung von Eingaben ...

              Und zweitens gibt mail() über das Funktionsergebnis nur an, dass die Nachricht erfolgreich an den MTA/Mailserver zum Versand übergeben wurde. Nicht, ob sie auch irgendwann mal irgendwo zugestellt werden kann.

              So long,
               Martin

              --
              Der Stress von heute ist die gute alte Zeit von morgen.
              1. Hallo Martin,

                ich will das Thema nicht zu Tode reiten, habe aber ein Verständnisproblem.

                Und zweitens gibt mail() über das Funktionsergebnis nur an, dass die Nachricht erfolgreich an den MTA/Mailserver zum Versand übergeben wurde. Nicht, ob sie auch irgendwann mal irgendwo zugestellt werden kann.

                Und du meinst, _das_ kannst du vorab prüfen? Habe ich nicht verstanden.

                LG Kalle

                1. Guten Tag,

                  Und du meinst, _das_ kannst du vorab prüfen? Habe ich nicht verstanden.

                  Nein. Man kann schwer _vor_ dem Versand prüfen, ob eine E-Mail zugestellt worden ist (oder werden kann).

                  Man kann, und sollte, aber durchaus mal schauen, was die vermutete E-Mail-Adresse so enthält (Plausibilität), ohne eine genaue Prüfung (Validität) durchzuführen.

                  Auch E-Mail-Adressen sind Input von Fremden und damit grundsätzlich nicht vertrauenswürdig.

                  PHP bietet dafür übrigens einen eigenen Filter: FILTER_VALIDATE_EMAIL (FILTER_SANITIZE_EMAIL sollte man dagegen nicht verwenden).

                  Gruß
                  Christoph Jeschke

                  --
                  Zend Certified Engineer
                  Certified Urchin Admin
                2. Hallo,

                  ich will das Thema nicht zu Tode reiten, habe aber ein Verständnisproblem.

                  ;-)

                  »» Und zweitens gibt mail() über das Funktionsergebnis nur an, dass die Nachricht erfolgreich an den MTA/Mailserver zum Versand übergeben wurde. Nicht, ob sie auch irgendwann mal irgendwo zugestellt werden kann.
                  Und du meinst, _das_ kannst du vorab prüfen?

                  Nein, das kann ich eben nicht. Und auch niemand sonst, der aus einem PHP-Script heraus mit mail() eine Mailnachricht verschicken will - es liegt in der Natur der Sache, dass das Absenden einer Mailnachricht keine Garantie ist, dass sie auch ankommt.
                  Ich wollte damit nur ein zweites Argument nachliefern (da Vinzenz schon mit "erstens" vorgelegt hatte), warum die Prüfung einer Mailadresse auf Richtigkeit und Existenz irgendwo zwischen nutzlos und unmöglich liegt.

                  Ciao,
                   Martin

                  --
                  Abraham sprach zu Bebraham: Kann i mal dei Cebra ham?
      2. ich empfinde die Prüfung von Mailadressen vollkommen unsinnig.

        Nein, es ist wichtig - allerdings sollte man sie so prüfen, dass gültige Adressen nicht durch den Rost fallen.

        Ich hab' letztens Lokal ein Wordpress installiert und ein paar Testuser über das Backend angelegt.

        Erste Eingabe: foobar@localhost wurde verweigert, weil es angeblich keine gültige Mailadresse darstellt - sowas ist absolut uncool. Wenn jemand im Intranet eine Webanwendung einsetzt oder in einer Entwicklungsumgebung, dann hat sowas zu funktionieren. Die meisten Prüfroutinen sehen sowas aber garnicht vor - gültige Mailadressen fallen raus, ungültige bleiben drin  - dann lieber garnicht oder auf "Mindestens 1 Zeichen vor und 1 Zeichen hinter dem Klammeraffen" prüfen.

        Das wird aber abgelehnt. Dann gebe ich ein: unsinn@web.de

        Bitte 100x schreiben "Ich soll für Beispiele keine möglicherweise real existierenden E-Mail-Adressen angeben."

      3. ich empfinde die Prüfung von Mailadressen vollkommen unsinnig.

        Sie ist nur partiell möglich. Nur ein DNS Lookup für die maildomain ist möglich.

        Aber der Unsinn steckt ganz wo anders...

        Wenn ich mich z.B. in ein Gästebuch eitrage, wird meistens eine E-Mail verlangt. Was weiss denn ich, was damit geschieht?

        In der Tat fragwürdig. Schliesslich ist ein Formmailer etwas anderes als ein Gästebuch. Und auch ein Formmailer kann so betrieben werden, dass eine Emailadresse nicht eine notwendige Betriebsvoraussetzung darstellt. Es gibt schliesslich andere Kontaktmöglichkeiten.

        Für Menschen lesbar gebe ich ein: osmer.kh bei gmx.de
        Das wird aber abgelehnt. Dann gebe ich ein: unsinn@web.de
        Das wird akzeptiert.
        Also erzähle mir keiner was von Adressprüfung.

        Als Admin eines Formmailers oder Gästebuchs kann mich eine Emailadresse schon etwas angehen (sofern sie angegeben wurde). Allerding halte ich es für sinnvoller, aus dem Gesamtkontext die Existenz der mailadresse einzuschätzen, die ja nur dann kein erzwungener Unsinn ist, wenn man sie ähm nicht erzwingt.

        mfg Beat

        --
        ><o(((°>           ><o(((°>
           <°)))o><                     ><o(((°>o
  2. $mailpruefen = '§[\w-.]{1,}@[\w-]{3,}.[\w-]{2,4}§';

    allgemeiner Hinweis zu Zeichenklassen.

    [\w-.] akzeptiert nicht "-" als Zeichen, sondern interpretiert es als Teil einer Range. damit "-" innerhalb einer Zeichenklasse mit Sicherheit interpretiert wird,
    muss es als letztes Zeichen verwendet werden.
    [\w.-]
    oder es muss maskiert werden.
    [\w-.]

    mfg Beat;

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o