Mail-Zeichensatz

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

  • Mail-Zeichensatz

    Hallo,
    beim Versenden von Mail's werden Umlaute (für ä z.B. ein ? ) im Betreff falsch dargestellt, im Haupttext stimmts.
    Hat das was mit dem Zeichensatz zu tun? Wie kann ich das ändern. Ansonsten tut das Mailversenden einwandfrei.
    Zum Versenden der Mail verwende ich folgendes Kontrukt:


    $header="From: ".$mailfromname."<".$mailfrommail.">\r\n";
    $header .= "Reply-To: ".$mailfrommail."\r\n";
    $header .= "X-Mailer: PHP/" . phpversion(). "\r\n";
    $header .= "X-Sender-IP: ".$REMOTE_ADDR."\r\n";
    $header .= "Content-Type: text/plain";

    $subject = "Terminänderung";
    $text = "Info über eine Terminänderung\r\n"
    $text .= "...\r\n"

    $lret = mail($mailto, $subject,$text ,$header);

    Gruß Fribu



  • #2
    Hast du mehrere Clients ausprobiert?
    Welcher Hoster?

    Kommentar


    • #3
      Das ganze läuft in einer Umgebung mit Exchange-Server. Die Umlaute wurden auf mehreren Clietns falsch dargestellt.

      Fribu

      Kommentar


      • #4
        Ich habe jetzt noch probiert:
        Aus dem Text "Mail-Änderung" wird im Mail Quelltext ?iso-8859-1?Q?Mail-=C4nderung?=
        Wenn ich die Mail so versende werden die Umlaute im Betreff korrekt dargestellt. Gibt es für die Umsetzung eine fertige Funktion, oder gilt hier selbst ist der Mann/Frau?


        Fribu

        Kommentar


        • #5
          Eigentlich sollte es reichen, wenn du den Zeichensatz im Header definierst, da brauchst du nichts umzuwandeln.

          Kommentar


          • #6
            Den Zeichensatz habe im Header so definiert:

            $header="From: ".$mailfromname."<".$mailfrommail.">\r\n";
            $header .= "Reply-To: ".$mailfrommail."\r\n";
            $header .= "X-Mailer: PHP/" . phpversion(). "\r\n";
            $header .= "X-Sender-IP: ".$REMOTE_ADDR."\r\n";
            $header .= "X-Priority: 1\r\n";
            $header .= "MIME-Version: 1.0\r\n";
            $header .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_message_parts\"\r\n";
            $header .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n";
            $header .= "Content-Transfer-Encoding: 7bit\r\n";
            $header .= "Content-Transfer-Encoding: quoted-printable";

            danach steht im Text der Betreff, z.B. Terminänderung.
            und es tut nicht.

            Fribu

            Kommentar


            • #7
              brauchst du den hier:
              $header .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_message_parts\"\r\n";

              Kommentar


              • #8
                Wenn ich den Teil aus dem Header nehme tuts auch nicht. Muss ich dazu möglicherweise die IMAP - Functionen einbinden?

                Fribu

                Kommentar


                • #9
                  mach mal alles raus, was du nicht brauchst. ich versteh jetzt nicht, warum der betr. auf einmal im text steht.

                  Kommentar


                  • #10
                    sorry, da hatte ich einen Textdreher, muss lauten

                    danach steht im Betreff der Text, z.B. Termin?nderung.
                    und es tut nicht.

                    Fribu

                    Kommentar


                    • #11
                      Hallo,
                      habe jetzt das Problem mit einer eigene Function gelöst:
                      function mailsubject($cvar) {

                      $array_1 = array("ä","ö","ü","Ä","Ö","Ü","ß");
                      $array_2 = array("=E4","=F6","=FC","=C4","=D6","=DC","=DF");
                      $cneu = $cvar;
                      for($x=0;$x<7;$x++){
                      $cneu = str_replace($array_1[$x],$array_2[$x],$cneu);
                      }

                      if($cneu != $cvar) {
                      $cneu = "=?iso-8859-1?Q?".$cneu."?=";
                      }

                      return $cneu;
                      }
                      Verbesserungen sind immer willkommen.

                      Fribu

                      Kommentar


                      • #12
                        Hallo,
                        habe jetzt eine eigene Funktion geschrieben, mit es funzt:
                        <?php

                        function mailsubject($cvar) {

                        $array_1 = array("ä","ö","ü","Ä","Ö","Ü","ß");
                        $array_2 = array("=E4","=F6","=FC","=C4","=D6","=DC","=DF");
                        $cneu = $cvar;
                        for($x=0;$x<7;$x++){
                        $cneu = str_replace($array_1[$x],$array_2[$x],$cneu);
                        }

                        if($cneu != $cvar) {
                        $cneu = "=?iso-8859-1?Q?".$cneu."?=";
                        }

                        return $cneu;
                        }

                        ?>
                        Verbesserungen sind immer willkommen.

                        Fribu

                        Kommentar

                        Lädt...
                        X