Matt: Passende E-Mail-Kodierung: Eurozeichen

Hallo zusammen,

das ewige Problem beim Versenden von E-Mails via PHP:

Ein String ($_SESSION['text']) ist utf8-kodiert.
Mit PHP versende ich nun eine E-Mail welche iso-8859-1 kodiert ist. Das Skript ist utf8-kodiert gespeichert.

Mit stripslashes(utf8_decode($_SESSION['text'])) kodiere ich die Iso-Nachricht und sende Sie mit folgendem Header an den Empfänger:

  
$header  = 'From: xxx';  
$header .= "\r\n";  
$header .= 'Reply-To: xxx';  
$header .= "\r\n";  
$header .= "MIME-Version: 1.0";  
$header .= "\r\n";  
$header .= "Content-type: text/plain; charset=iso-8859-1";  
$header .= "\r\n";  
$header .= "Content-Transfer-Encoding: 8bit";  
$header .= "\r\n";  

Wenn im Inhalt der E-Mail ein € verwendet wurde, steht dort nun ein Fragezeichen (?). Die Umlaute stimmen.
=> liegt wohl daran, dass "iso-8859-1" kein Eurozeichen enthält.

Wende ich nun den Trick mit "Content-type: text/plain; charset=iso-8859-15" (Latin0 bzw. Latin9) an, wird dies auf einigen Mail-Servern funktioniert, aber z.B. nicht bei Freemail und GMX.
=> liegt wohl daran das ISO ...-15 nicht wirklich verbreitet ist.

Wende ich "Content-type: text/plain; charset=utf-8" ohne "utf8_decode" an, ist selbiges wie bei ISO ...-15. Freemail interpretiert das irgendwie gar nicht und der Betreff besteht aus Hieroglyphen.

Hat jemand eine wirklich funktionierende Methode oder klappt das bis heute nicht einwandfrei?

Grüße,
Matt

  1. @@Matt:

    Wende ich nun den Trick mit "Content-type: text/plain; charset=iso-8859-15" (Latin0 bzw. Latin9) an, wird dies auf einigen Mail-Servern funktioniert, aber z.B. nicht bei Freemail und GMX.

    Du meinst nicht Mail-Server, sondern Webmail-Interfaces?

    Hat jemand eine wirklich funktionierende Methode oder klappt das bis heute nicht einwandfrei?

    Sag den Empfängern deiner Mails, sie mögen einen vernünftigen Mailclient benutzen (oder auch einen unvernünftigen wie M$ Outlook Express), kein Webmail. >;->

    Webmail-Interfaces kennen oft nur ISO 8859-1 und sind damit auf der Höhe der Steinzeit.

    Live long and prosper,
    Gunnar

    --
    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
    1. Hallo Gunnar

      Wende ich nun den Trick mit "Content-type: text/plain; charset=iso-8859-15" (Latin0 bzw. Latin9) an, wird dies auf einigen Mail-Servern funktioniert, aber z.B. nicht bei Freemail und GMX.

      Du meinst nicht Mail-Server, sondern Webmail-Interfaces?

      Genau das meinte ich ;-)

      Hat jemand eine wirklich funktionierende Methode oder klappt das bis heute nicht einwandfrei?

      Sag den Empfängern deiner Mails, sie mögen einen vernünftigen Mailclient benutzen (oder auch einen unvernünftigen wie M$ Outlook Express), kein Webmail.

      Wenn das nur so einfach wäre. Immerhin, wenn die Kunden etwas ausdrucken wollen, mach sie das überwiegend aus einem Mail-Client und nicht aus solch veralterten Web-Mail-Interfaces.

      Webmail-Interfaces kennen oft nur ISO 8859-1 und sind damit auf der Höhe der Steinzeit.

      Das habe ich festgestellt. Find ich eigentlich echt krass, dass die das heutzutage noch nicht wirklich gebacken bekommen.

      Grüße
      Matt

      1. Hallo,

        Webmail-Interfaces kennen oft nur ISO 8859-1 und sind damit auf der Höhe der Steinzeit.
        Das habe ich festgestellt. Find ich eigentlich echt krass, dass die das heutzutage noch nicht wirklich gebacken bekommen.

        och, das kann man so und so sehen.
        Wenn man mal annimmt, dass so ein Webmail-Interface ja eigentlich nur eine Notlösung für die Fälle ist, in denen man keinen Mailclient nutzen und ggf. erst einrichten kann (Internet-Cafe, fremde Büros etc.), dann finde ich es nicht tragisch, wenn hier und da Darstellungsfehler auftreten. Für einen Notbehelf ist das trotzdem noch ganz brauchbar.

        So long,
         Martin

        --
        Der Stress von heute ist die gute alte Zeit von morgen.
        1. @@Der Martin:

          Wenn man mal annimmt, dass so ein Webmail-Interface ja eigentlich nur eine Notlösung […] ist

          Für eine „Notlösung“ benutzen verdammt viele so’n Ding als einzigen Mail-Zugang.

          Ich gehörte bis vor kurzem sogar selbst dazu und habe mich über das grottige web.de-Interface geärgert. (Liest hier jemand von denen mit?)

          Live long and prosper,
          Gunnar

          --
          Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
  2. Yerf!

    Wenn im Inhalt der E-Mail ein € verwendet wurde, steht dort nun ein Fragezeichen (?). Die Umlaute stimmen.
    => liegt wohl daran, dass "iso-8859-1" kein Eurozeichen enthält.

    vermutlich

    Wende ich nun den Trick mit "Content-type: text/plain; charset=iso-8859-15" (Latin0 bzw. Latin9) an, wird dies auf einigen Mail-Servern funktioniert, aber z.B. nicht bei Freemail und GMX.
    => liegt wohl daran das ISO ...-15 nicht wirklich verbreitet ist.

    Es ist vielleicht nicht weit verbreitet, aber bei korrekter Angabe der Codierung sollte es aber eigentlich trotzdem korrekt dargestellt werden (außer irgendeine komische Software geht da grundsätzlich von der Windows 1252-Codierung aus, die basiert auf 8859-1 und enthält zusätzlich das Euro-Zeichen im ungenutzten bereich der ISO-Codierung)

    Wende ich "Content-type: text/plain; charset=utf-8" ohne "utf8_decode" an, ist selbiges wie bei ISO ...-15. Freemail interpretiert das irgendwie gar nicht und der Betreff besteht aus Hieroglyphen.

    Der Betreff ist ja auch kein Content. Der muss anders codiert werden... (dazu müsste sich aber hier im Archiv einiges finden lassen)

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Wende ich nun den Trick mit "Content-type: text/plain; charset=iso-8859-15" (Latin0 bzw. Latin9) an, wird dies auf einigen Mail-Servern funktioniert, aber z.B. nicht bei Freemail und GMX.
      => liegt wohl daran das ISO ...-15 nicht wirklich verbreitet ist.

      Es ist vielleicht nicht weit verbreitet, aber bei korrekter Angabe der Codierung sollte es aber eigentlich trotzdem korrekt dargestellt werden (außer irgendeine komische Software geht da grundsätzlich von der Windows 1252-Codierung aus, die basiert auf 8859-1 und enthält zusätzlich das Euro-Zeichen im ungenutzten bereich der ISO-Codierung)

      Was siehst du als korrekte Kodierung?

      $header  = 'From: xxx';
      $header .= "\r\n";
      $header .= 'Reply-To: xxx';
      $header .= "\r\n";
      $header .= "MIME-Version: 1.0";
      $header .= "\r\n";
      $header .= "Content-type: text/plain; charset=iso-8859-15";
      $header .= "\r\n";
      $header .= "Content-Transfer-Encoding: 8bit";
      $header .= "\r\n";

        
      
      > ~~~php
        
      
      > $latin_message = @iconv('UTF-8', 'ISO-8859-15', $_SESSION['text']);  
      > 
      
      

      Ist das hier nicht korrekt?

      Webmail-Interfaces stellen das natürlich falsch dar, aber meiner bisher getesteten Mail-Clients wie Outlook, Thunderbird etc. interpretieren das korrekt.

      Danke!

      1. Yerf!

        Ist das hier nicht korrekt?

        Eigentlich schon.

        Webmail-Interfaces stellen das natürlich falsch dar, aber meiner bisher getesteten Mail-Clients wie Outlook, Thunderbird etc. interpretieren das korrekt.

        Da hat dann wohl Gunnar Recht und die Webmail-Software ist kaputt...

        Da kann man nicht viel machen... außer die Fehlertoleranz von Browsern austesten und Windows-1252 als Codierung verwenden.

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
  3. Hi,

    Ein String ($_SESSION['text']) ist utf8-kodiert.
    Mit PHP versende ich nun eine E-Mail welche iso-8859-1 kodiert ist. Das Skript ist utf8-kodiert gespeichert.
    Wenn im Inhalt der E-Mail ein € verwendet wurde, steht dort nun ein Fragezeichen (?). Die Umlaute stimmen.
    => liegt wohl daran, dass "iso-8859-1" kein Eurozeichen enthält.

    Richtig.

    Wende ich nun den Trick mit "Content-type: text/plain; charset=iso-8859-15" (Latin0 bzw. Latin9) an, wird dies auf einigen Mail-Servern funktioniert, aber z.B. nicht bei Freemail und GMX.
    => liegt wohl daran das ISO ...-15 nicht wirklich verbreitet ist.

    Da dürfte es daran liegen, daß die Webmailer-Seiten ihre Codierung nicht nach einer Mail, die in einem kleinen Teil der Seite angezeigt wird, richten, sondern nach ihren eigenen Bedürfnissen.

    Die sinnvollste Methode dürfte sein, das "€"-Zeichen als "EUR" oder "Euro" zu codieren ;-)

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Die sinnvollste Methode dürfte sein, das "€"-Zeichen als "EUR" oder "Euro" zu codieren ;-)

      Hallo Andreas,

      Das habe ich bisher so gemacht. Aber jetzt kommt hinzu, dass der Kunde pro Zeichen in einer Eingabemaske ("Textarea") zahlt. Deswegen wird das jetzt schwierig.

      Grüße
      Matt

      1. Hi,

        Das habe ich bisher so gemacht. Aber jetzt kommt hinzu, dass der Kunde pro Zeichen in einer Eingabemaske ("Textarea") zahlt. Deswegen wird das jetzt schwierig.

        "Um eine einwandfreie Darstellung in allen Mail-Programmen und Web-Interfaces Ihrer Kunden zu gewährleisten, wandeln wir in der versendeten E-Mail das Euro-Zeichen '€' in die übliche Schreibweise 'EUR' um. Natürlich zählt dies für Sie weiterhin als nur ein Zeichen."

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
      2. Hi,

        Die sinnvollste Methode dürfte sein, das "€"-Zeichen als "EUR" oder "Euro" zu codieren ;-)
        Das habe ich bisher so gemacht. Aber jetzt kommt hinzu, dass der Kunde pro Zeichen in einer Eingabemaske ("Textarea") zahlt.

        Ja und? Es soll ja nicht der Kunde EUR oder Euro eingeben, sondern diese Umwandlung wird für den E-Mail-Versand vorgenommen.
        Der Kunde gibt nach wie vor € ein und zahlt auch nur für €.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.