Ankündigung

Einklappen
Keine Ankündigung bisher.

Beitragsansicht

Einklappen

[Erledigt] mail & Umlaute, UTF-8 Wahnsinn??? Hilfe! :S

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] mail & Umlaute, UTF-8 Wahnsinn??? Hilfe! :S

    Hallo Leute,

    ich habe ein Problem mit Umlauten bei meinem Formmailer:

    PHP-Code:
    Strict StandardsCreating default object from empty value in /kunden/321686_97816/webseiten/buwe/php/postregister.php on line 83
    8
    -bit character in mailbox address "C?LC?@gmail.com" 
    Eingegebene eMail war ÄlÖ@gmail.com nicht C?LC?@gmail.com.

    Line 83 Sieht wie folgt aus

    PHP-Code:
    $mailer->CharSet 'UTF-8'
    Der Code im ganzen:
    PHP-Code:
                $Betreff "Ihre Registrierung Zensur";
                
    $body "<html><head><title>$Betreff</title></head><body><p>Zensur</p></body></html>";
                
    $header  'MIME-Version: 1.0' "\r\n";
                
    $header .= "Content-Type: text/plain; charset = \"UTF-8\";\n";
                
    $header .= "To: Zensur" "\n";
                
    $header .= 'From: '.$Vorname.' '.$Nachname.' <'.$eMail.'>' "\n";
                
    $header .= "Content-Transfer-Encoding: 8bit\n";
                
    $header .= "\n";
                
    $mailer->CharSet 'UTF-8';
                if(@
    mail($email$Betreff$body$header)) {
                    
    $sql 'INSERT INTO users(vorname, nachname, strasse, hausnr, PLZ, ort, email, telefonnr, passwort, code, aktiv, date, time, IP) VALUES ("'.$Vorname.'","'.$Nachname.'","'.$Strasse.'","'.$Hausnummer.'","'.$PLZ.'","'.$Ort.'","'.$eMail.'","'.$Telefonnummer.'","'.md5($Passwort).'","'.$code.'","0","'.date('d.m.Y').'","'.date('H:i:s').'","'.$client_ip.'");';
                    
    $result $db->query($sql);
                    if(!
    $result) die('Query fehlgeschlagen!');
                    
    $msg "Ihre Registrierung war erfolgreich! Eine E-Mail zur Aktivierung wurde versandt!";
                } 

    Vielleicht kann mir anhand dieser Informationen ja bereits jemand helfen, ich suche vergeblich seit 2 Tagen selbst nach einer Lösung, für jeden Tip wäre ich sehr dankbar!

    Benötigt Ihr mehr Informationen? -> Lasst es mich wissen! =)

    Liebe Grüße... Chepre
    Zuletzt geändert von Chepre; 03.04.2012, 10:00.


  • #2
    Bitte Code-Formatierung überarbeiten...

    Kommentar


    • #3
      Mailer-Klasse ...?

      Kommentar


      • #4
        Zitat von Pete09 Beitrag anzeigen
        Bitte Code-Formatierung überarbeiten...
        Sorry mein erster Beitrag hier...
        Passt das jetzt so?

        Kommentar


        • #5
          Zitat von Chepre Beitrag anzeigen
          Sorry mein erster Beitrag hier...
          Passt das jetzt so?
          Es gibt auch ein PHP-Tag mit [ php ] dann gibts noch ordentliches Highlighting


          MFG Connar

          Kommentar


          • #6
            Zitat von Connar Beitrag anzeigen
            Es gibt auch ein PHP-Tag mit [ php ] dann gibts noch ordentliches Highlighting


            MFG Connar
            Ah super, danke - habs gleich geändert =)

            Kommentar


            • #7
              Vielleicht solltest du schon wenn du die Daten des Formulars bekommst, diese validieren und dann gar nicht erst zu dem Punkt des Versendens kommen.
              Denn u.a. sind Umlaute in E-Mails nicht erlaubt.
              Siehe RFC 2822 //edit: (siehe RFC im Beitrag unter mir. RFC 2822 is Obsolete)

              Des Weiteren benutzt du die PHP-Mail Funktion
              PHP-Code:
              @mail($email$Betreff$body$header
              Und davor setzt du in einem Mailer-Objekt? folgendes
              PHP-Code:
              $mailer->CharSet 'UTF-8'
              was überhaupt keinen Einfluss auf das nachfolgende hat, da du die Mail nicht über das Mailer-Objekt versendest.
              Was willst du nun also machen? die Mail über PHP-Mail versenden oder über das Mailer-Objekt? und welche Mailer-Klasse verwendest du?

              Dann solltest du dir auch nochmal Gedanken über SQL-Injections, sowie E-Mail Injections machen, da in deinem Code-Schnipsel nichts davon zu sehen ist.
              Zuletzt geändert von Naffto; 03.04.2012, 10:45.

              Kommentar


              • #8
                Ergänzend dazu lässt sich sagen, Umlaute sind als Punycode im Domänenteil erlaubt, allerdings im Lokalteil wie auch innerhalb der E-Mail nicht. Siehe RFC 5322

                viel Zitiert: http://www.php.de/adventskalender-20...fverkehrs.html
                http://www.robo47.net/text/38-Mail-ist-tot-es-lebe-mail

                Kommentar


                • #9
                  Danke für eure Antworten, ich werde mich darüber genauer Informieren.
                  Was ich mich jedoch außerdem noch Frage:

                  Was ist dann mit Umlaut-Domains? Die gibt es ja schließlich...?

                  Kommentar


                  • #10
                    Lesen kannst Du aber?!
                    Umlaute sind als Punycode im Domänenteil erlaubt
                    --
                    ^^ O.O
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Zitat von nikosch Beitrag anzeigen
                      Lesen kannst Du aber?!
                      Doch doch, mir ist jetzt auch klar was du meintest.
                      Die Lösung heißt: Konvertieren, hab auch die entsprechende Klasse gefunden glaube ich =)

                      Danke für eure Hilfe

                      Kommentar


                      • #12
                        Hallo,

                        ich habe mir eine entsprechende Klasse zur Umwandlung der Domains mit Umlauten bei http://idnaconv.phlymail.de/ heruntergeladen und wie folgt eingebunden:

                        PHP-Code:
                                mb_internal_encoding('UTF-8');    
                            
                        $inputeMail $_POST['email'];
                            list(
                        $username$maildomain) = explode("@"$inputeMail);
                            require_once(
                        'php/idna_convert.class.php');
                            
                        $IDN = new idna_convert(array('idn_version' => 2008));
                            
                        $input utf8_encode($maildomain);
                            
                        $punydomain $IDN->encode($input);
                            
                        $eMail $username."@".$punydomain;
                            echo 
                        $eMail
                        Im Formular beinhaltet der Header:

                        HTML-Code:
                        <meta charset="utf-8">
                        Ich bekomme als Ergebnis bei dem Beispiel "test@nörgler.com" ein "test@xn--nrgler-3ka7h.com" ausgegeben.

                        Das ist natürlich nicht erwünscht, denn richtig müsste das Ergebnis "test@xn--nrgler-wxa.com" lauten.
                        Hat jemand eine Idee was ich falsch gemacht habe?

                        Vielen Dank schon mal für jede Antwort und liebe Grüße, Chepre.

                        Kommentar


                        • #13
                          Was willst Du denn mit dem utf8_encode() da? Dir liegen doch gar keine ISO-8859 Daten vor, die Du noch mal nach UTF-8 codieren müsstest.

                          Gruß Jens

                          Kommentar


                          • #14
                            Mails schickt man NICHT mit mail()
                            http://www.php.de/adventskalender-20...fverkehrs.html
                            http://www.robo47.net/text/38-Mail-ist-tot-es-lebe-mail

                            Hier findest du die besprochenen Klassen
                            http://sourceforge.net/projects/phpmailer/

                            ################################################## #####
                            EDIT:
                            Hinweis von Jens Clasen:
                            Den PHPmailer besser hier laden, der sourceforge-Link ist veraltet:
                            http://code.google.com/a/apache-extras.org/p/phpmailer/

                            ################################################## #####



                            http://swiftmailer.org/
                            http://pear.php.net/package/Mail/


                            Beispiel für phpmailer:

                            PHP-Code:
                            <?php
                            require('phpmailer/class.phpmailer.php');
                            require(
                            'phpmailer/class.smtp.php'); // stellt die Methoden für SMTP-Connect bereit
                            $mail = new PHPMailer();

                            // Anmelden am SMTP-Server
                            $mail->IsSMTP();
                            $mail->Host     'smtp.example.org'
                            $mail->SMTPAuth true
                            $mail->Username $smtp_username;
                            $mail->Password $smtp_passwort;

                            $mail->Subject $betreff;
                            $mail->IsHTML(true);
                            $mail->Body     $html// Das was du vermailen möchtest HTML-Format
                            $mail->AltBody   $text// Das was du vermailen möchtest txtL-Format
                            $mail->From     $absender;
                            $mail->FromName $absendername;
                            $mail->AddReplyTo($antwort_an_email);
                            $mail->Sender     $fehlerpostfach;
                            $mail->CharSet  =  "utf-8"// btw. den charset, mit dem du arbeitest
                            $mail->AddAddress($empfaenger_email);
                            $mail->Send(); // weg damit
                            Zuletzt geändert von Wolla; 04.04.2012, 12:08. Grund: Link geändert
                            :
                            if ($var != 0) {
                              
                            $var 0;

                            Kommentar


                            • #15
                              Zitat von Jens Clasen Beitrag anzeigen
                              Was willst Du denn mit dem utf8_encode() da? Dir liegen doch gar keine ISO-8859 Daten vor, die Du noch mal nach UTF-8 codieren müsstest.

                              Gruß Jens
                              Hallo Jens,

                              tja ich weiß auch nicht so genau
                              Habe es einfach so aus der readme.txt übernommen und dachte vlt. ist es auch ganz sinnvoll, da ich mir das falsche Ergebnis nicht anders erklären kann als durch ein codierungsproblem.

                              Irgendeine Idee? Soll ich diese Zeile entfernen?

                              Lg, Chepre =)

                              Kommentar

                              Lädt...
                              X