Electronix: UTF-8 Mail mit PHP versenden

Hallo,

ich versuche gerade, eine Mail im UTF-8-Charset mit PHP zu versenden. Der Text der Mail wird auch korrekt kodiert, sprich, alle "ä" etc werden korrekt dargestellt. Nur im Betreff funktioniert das nicht, ein ä wird immer als ä angezeigt. Muss ich für die Betreffzeile noch etwas besonderes tun, damit die auch korrekt formatiert wird?

$header = "From:" . $sender . "\nContent-Type:text/html; charset=utf-8\nContent-Transfer-Encoding: 8bit\n";  
  
mail($mailadresse, "Das ä wird falsch dargestellt", "Hier steht bei mir noch mehr Text, als HTML", $header);

Hat irgendwer vielleicht eine Idee, wie ich das beheben kann?

Mit freundlichen Grüßen,

Electronix

  1. Hi,

    Hat irgendwer vielleicht eine Idee, wie ich das beheben kann?

    Du könntest erst mal in den Nutzerkommentaren zu mail im Handbuch nachlesen.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hello,

    ich versuche gerade, eine Mail im UTF-8-Charset mit PHP zu versenden. Der Text der Mail wird auch korrekt kodiert, sprich, alle "ä" etc werden korrekt dargestellt. Nur im Betreff funktioniert das nicht, ein ä wird immer als ä angezeigt. Muss ich für die Betreffzeile noch etwas besonderes tun, damit die auch korrekt formatiert wird?

    Header dürfen prinzipiell nur in Singlebyte ASCII versandt werden, also alle Codepoints nur bis 0xFF = 127d.

    Wenn Du andere Codepoints oder Multibyte übertragen möchtest, musst Du das Encoding und das Content-Transfer-Encoding angeben.

    Das einfachste wäre, Du würdest Dir mal eine Mustermail mit einem gängigen Client erzeugen und nachschauen (Mit Hex-Editor), was der da so gemacht hat.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Ich habe jetzt einfach das Betreff vorher umgewandelt.

      $betreff = "=?UTF-8?Q?" . imap_8bit($betreff) . "?=";

  3. Hi,

    ich versuche gerade, eine Mail im UTF-8-Charset mit PHP zu versenden. Der Text der Mail wird auch korrekt kodiert, sprich, alle "ä" etc werden korrekt dargestellt. Nur im Betreff funktioniert das nicht, ein ä wird immer als ä angezeigt. Muss ich für die Betreffzeile noch etwas besonderes tun, damit die auch korrekt formatiert wird?

    ja, Headerzeilen, die Zeichen außerhalb des ASCII-Bereichs enthalten, müssen gesondert codiert werden, siehe RFC 2047. Mir war, als gäbe es zwischen den IMAP-Funktionen von PHP etwas, das diese Codierung erzeugt, finde aber nur den umgekehrten Weg.

    Ciao,
     Martin

    --
    Gott hilft niemandem, er erfreut sich nur an unseren Leiden.
      (Ashura)
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Hello,

      ja, Headerzeilen, die Zeichen außerhalb des ASCII-Bereichs enthalten, müssen gesondert codiert werden, siehe RFC 2047. Mir war, als gäbe es zwischen den IMAP-Funktionen von PHP etwas, das diese Codierung erzeugt, finde aber nur den umgekehrten Weg.

      Meintest Du vielleicht
      http://de.php.net/manual/en/function.mb-encode-mimeheader.php?

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
      1. Hallo Tom,

        siehe RFC 2047. Mir war, als gäbe es zwischen den IMAP-Funktionen von PHP etwas, das diese Codierung erzeugt, finde aber nur den umgekehrten Weg.
        Meintest Du vielleicht
        http://de.php.net/manual/en/function.mb-encode-mimeheader.php?

        von der Beschreibung her ist es wohl das, was ich meinte - aber ich hatte irgendwie im Gedächtnis, dass eine solche Funktion direkt bei den Mail-bezogenen Funktionen zu finden sei. Vielleicht habe ich da was verwechselt ...

        Ciao,
         Martin

        --
        Die letzten Worte der Challenger-Crew:
        Lasst doch mal die Frau ans Steuer!
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(