Ankündigung

Einklappen
Keine Ankündigung bisher.

Umlaute nur im Betreff falsch

Einklappen

Neue Werbung 2019

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

  • Umlaute nur im Betreff falsch

    Hallo zusammen,
    ich habe ein seltsames Problem. Ich möchte einen HTML-Newsletter verschicken und bin gerade dabei, dies zu programmieren. Es geht prinzipiell gut, nur der Betreff macht Probleme. Die großen Umlaute (ÄÖÜ), ß und € werden nicht richtig dargestellt. Die kleinen Umlaute (äöü) funktionieren.

    Die E-Mail selbst funktioniert auch, ebenso die Daten aus der Datenbank.
    Zum Verschicken der E-Mails hole ich die Daten aus einer Datenbank und werte die Zeilen in einer while-Schleife aus. Der Betreff wird in einem Formular auf einer utf-8-codierten Seite eingetragen.
    Code:
    <meta charset="UTF-8">
    <td><input type="text" size="24" name="betreff" /></td>
    Hier noch der Header für die E-Mail:
    PHP-Code:
        $header  "MIME-Version: 1.0\r\n";
        
    $header .= "Content-type: text/html; charset=UTF-8\r\n";
        
    $header .= "From: Nikolaus <nikolaus@himmel.de>\r\n";
        
    $header .= "Reply-To: <nikolaus@himmel.de>\r\n";
        
    $erg mail($row[email], ($_POST[betreff]), $mailtext,$header); 
    Mit dem phpmailer funktioniert auch der Betreff. Ich frage mich aber, warum die normale mail()-Funktion nicht funktioniert.
    Hat jemand einen Tipp?
    Vielen Dank im vorraus!
    VG
    Martin

  • #2
    Fortgeschritten? Du benutzt mail() und dein Code enthält Fehler. Vielleicht solltest du dich doch besser als Anfänger einstufen.

    Benutze nicht mail() sondern den phpmailer oder besser noch Swift.

    Kommentar


    • #3
      Der Content und Charset bezieht sich auf den Mail-Body, den Betreff müsstest Du in utf8 kodieren. Dazu gibt es die passende Funktion in der Doku.

      Und zusätzlich muß ich Asterixus beipflichten!

      Kommentar


      • #4
        Was ist das Problem mit mail()?
        Der Code ist nicht vollständig, sondern nur ein Ausschnitt. Wo ist Deiner Meinnung nach ein Fehler?
        phpmailer habe ich auch mit ERfolg benutzt. Mich interessiert aber, wo der Fehler liegt.

        Kommentar


        • #5
          Der Code enthält zweifellos Fehler:
          $row[email] ist beispielsweise nur dann gültig, wenn du eine Konstante namens email definiert hast. Richtig heißt es $row['email'] oder $row["email"]. Das ist Grundwissen, wer das nicht weiß, ist objektiv alles andere als fortgeschritten.

          Warum mail() nicht zu benutzen ist, wurde hier schon oft genug diskutiert. Dir dabei helfen, wird hier (hoffentlich) niemand. Ich habe dir gesagt, was zu tun ist. Wenn du's nicht willst, hast du eben Pech gehabt.

          Kommentar


          • #6
            Was ist das Problem mit mail()
            ...deutet nicht auf den Kentnisstand "Fortgeschritten" hin, sorry...

            Kommentar


            • #7
              Zitat von Asterixus Beitrag anzeigen
              Der Code enthält zweifellos Fehler:
              $row[email] ist beispielsweise nur dann gültig, wenn du eine Konstante namens email definiert hast. Richtig heißt es $row['email'] oder $row["email"].
              Das stimmt so auch nicht. $row[email] ist ebenso gültig, aber nicht zu empfehlen.

              Warum du die Klammern darum setzt, ist auch fraglich. Nunja die Lösung ist, wie die Vorposter bereits schrieben, die fehlerhafte Zeichenkodierung, da sich der im header angegebene charset lediglich auf den mailbody bezieht.

              Kommentar


              • #8
                mit den Anführungsstrichen gebe ich Dir recht, das war einfach Schlamperei, wobei es genauso gut funktioniert. Auch mit Anführungsstrichen wird dei E-Mail an die richtige Adresse gesendet und die Umlaute funktionieren immernoch nicht. Eine UTF-8 Kodierung hat das ERgebnis noch verschlechtert. Da waren dann auch die kleinen Umlaute weg

                Kommentar


                • #9
                  Es gibt de- und en-codierungen...

                  Kommentar


                  • #10
                    @sycrog: Troll oder so? Wie kann man hier ernsthaft von sich geben, dass etwas, das Notices oder Warnings von sich gibt, gültig ist, und gleichzeitig behauptet, er sei fortgeschritten (sh. deine Angabe)?

                    @martin1605: Es funktioniert nicht genausogut, nein. Du unterdrückst Fehlermeldungen. Diese Unterdrückung der Fehlermeldungen verlangsamen dein Script extrem und es sind halt Fehler, die man selbst als fortgeschrittener Anfänger nicht mehr macht.

                    Kommentar


                    • #11
                      Zitat von sycrog Beitrag anzeigen
                      Das stimmt so auch nicht. $row[email] ist ebenso gültig, aber nicht zu empfehlen.
                      Du bezeichnest also etwas, das eine Notice wirft, als gültig?

                      VG

                      Kommentar


                      • #12
                        Die Klammern waren noch Überreste der UTF-8 Kodierung.
                        Aber bleiben wir doch beim Hauptproblem, dass nurr die großen Umlaute fehlerhaft sind und die kleinen passen.

                        Kommentar


                        • #13
                          @martin1605: Wenn du das HTML-Dokument korrekt für UTF8 deklarieren willst, muß das so aussehen:
                          Code:
                          <meta http-equiv="content-type" content="text/html; charset=utf-8" />



                          Aber bleiben wir doch beim Hauptproblem, dass nurr die großen Umlaute fehlerhaft sind und die kleinen passen.
                          In ein und derselben Zeichenkette? Nie im Leben! Entweder alle oder keiner...

                          Kommentar


                          • #14
                            Nein, hier wird dir niemand helfen bei deinem schlechten Stil. Benutze Swift oder den PHPMailer und dann wird man dir auch gerne helfen (und wo wir schon dabei sind, überdenke nochmal deine Meinung über deine Erfahrung).

                            Zitat von Arne Drews Beitrag anzeigen
                            @martin1605: Wenn du das HTML-Dokument korrekt für UTF8 deklarieren willst, muß das so aussehen:
                            Code:
                            <meta http-equiv="content-type" content="text/html; charset=utf-8" />
                            In HTML5 ist seine Definition korrekt...

                            Kommentar


                            • #15
                              Wieso musst du mich gleich anprangern? Ich schrieb lediglich die Tatsache, dass die benutzung eines index ohne quotes auch möglich ist (PHP verzeiht leider viel)... und im Übrigen wirft es eine Notice und keine Warning.

                              Kommentar

                              Lädt...
                              X