Phil Z.: E-Mail setzt die Umlaute falsch um.

Hallo.

Im moment verschicke ich meine E-Mails so:

$von=$_POST['von'];
$betreff=$_POST['betreff'];
$text=$_POST['text'];

$xtra="From: $von \r\n";
$xtra.= 'MIME-Version: 1.0' . "\r\n";
$xtra.= 'Content-type: text/html; charset=uft-8' . "\r\n";

$an="email@mail.de";

mail($an,$betreff,$text,$xtra);

Nur Leider werden die Umlaute nicht umgesetzt. Aus Ö wird Ã�.

Wie kann ich das ändern?

mfg

Phil Z.

  1. Hallo,

    $xtra.= 'Content-type: text/html; charset=uft-8' . "\r\n";

    ^^^

    Ist das ein Typo hier, oder auch im Skript? Wäre UTF-8 nicht richtiger?

    netten Tag
    ^da Powl

    --
    ===============================
    powl.hat-gar-keine-homepage.de/
    1. Hab ich geändert!

      Aber bringt leider nichts.

      Meine Mail kommt so an:

      Content-type: text/html; charset=UTF-8
      Message-Id: 20061104163712.6B4B5FC629@mx1.mkq.de
      Date: Sat,  4 Nov 2006 17:37:12 +0100 (CET)

      T�ST.?!

      Abgeschickt hatte ich: TÖST.?!

  2. Hallo Phil.

    Im moment verschicke ich meine E-Mails so:

    $von=$_POST['von'];
    $betreff=$_POST['betreff'];
    $text=$_POST['text'];

    Wozu diese Umspeicherung? Verwende doch die Schlüssel von $_POST direkt.

    $xtra="From: $von \r\n";
    $xtra.= 'MIME-Version: 1.0' . "\r\n";
    $xtra.= 'Content-type: text/html; charset=uft-8' . "\r\n";

    $an="email@mail.de";

    mail($an,$betreff,$text,$xtra);

    Nur Leider werden die Umlaute nicht umgesetzt. Aus Ö wird Ã�.

    Überaus merkwürdig, denn „Fehldargestelltes UTF-8-kodiertes „Ö““ wäre ein zwar in UTF-8 kodiertes aber nicht dieserart interpretiertes „Ö“. Das Ersatzzeichen (�) dagegen wird in diesem Zusammenhang normalerweise dann dargestellt, wenn eine bestimmte Bytefolge in UTF-8 keinem gültigen Zeichen zugeordnet werden kann. (Z. B. also wenn als ISO-8859-1 gesicherte Texte als UTF-8 interpretiert werden.)

    Es scheint also, als würden hier zwei Kodierungen vermischt, wobei keine von beiden die richtige ist.

    Was ergibt bei dir folgendes, wenn du „TÖST“ übergibst?

    $arr_chars = [link:http://de2.php.net/manual/en/function.str-split.php@title=str_split]($_POST['text']); // Zeichenkette aufsplitten  
      
    foreach($arr_chars as $str_char) {  
      
      echo [link:http://de2.php.net/manual/en/function.ord.php@title=ord]($str_char), ' '; // Numerische Repräsentation der Zeichen ausgeben  
      
    }
    

    In meiner UTF-8-orienterten Umgebung ergibt dies beispielsweise folgendes:

    84 195 150 83 84
    (T  Ö       S  T)

    Hast du bei deinem Formular explizit UTF-8 für das http://de.selfhtml.org/html/referenz/attribute.htm#form@title=accept-charset-Attribut festgelegt?

    Einen schönen Samstag noch.

    Gruß, Mathias

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    debian/rules
    1. Moin!

      $von=$_POST['von'];
      $betreff=$_POST['betreff'];
      $text=$_POST['text'];

      Wozu diese Umspeicherung? Verwende doch die Schlüssel von $_POST direkt.

      Damit man nicht mehr so einfach nachvollziehen kann, wenn gefährliche Userdaten ohne Escaping in gefährlichen Aktionen benutzt werden.

      Sozusagen der Freifahrtschein zum "Selbst in den Fuß schießen"!

      $xtra="From: $von \r\n";

      Mit anderen Worten:
      $xtra = "From: $_POST[von] \r\n";

      Und wenn in $_POST nun Zeilenumbrüche und weitere Mailheader drin stehen, z.B. BCC oder CC, dann hat man eine Spamschleuder gebaut.

      Nur: Das unscheinbare Verwenden von $von tarnt solche Tatsachen ganz prima.

      Deshalb: Das simple Kopieren von Daten aus $_GET, $_POST, $_COOKIE etc. GEHÖRT VERBOTEN!

      - Sven Rautenberg

      --
      "Love your nation - respect the others."
  3. Hallo,

    $von=$_POST['von'];
    $betreff=$_POST['betreff'];
    $text=$_POST['text'];

    $xtra="From: $von \r\n";
    $xtra.= 'MIME-Version: 1.0' . "\r\n";
    $xtra.= 'Content-type: text/html; charset=UTF-8' . "\r\n";

    ?? $xtra.= "Content-Transfer-Encoding: 8bit";

    Ich bin mir echt nicht sicher, frage eher selbst denn ich antworte.
    Ich verschicke Mails normal mit ISO-8859-1, (wieso auch nicht?)
    Aber mit der fehlenden Angabe zum Content-Transfer-Encoding wird das nichts zu tun haben, oder?

    netten Tag
    ^da Powl

    --
    ===============================
    powl.hat-gar-keine-homepage.de/