Matze: E-Mail-Kodierung

Hallo,

ich versende per mail() eine Mail^^
Die kommt auch schön an, aber die Kodierung stimmt nicht.
Als Header habe ich folgendes angegeben

  
$header = "MIME-Version: 1.0\r\n";  
$header .= "Content-type: text/plain; charset=utf-8\r\n";  

In der Variante kommen die Mails bei Yahoo zumindest mit äüö an.
Über die Adresse meiner Domain leider nicht.
Ich habe einen Link in meiner Mail mit ?id=2 (z.B.),
leider wird mir aber das "Ist gleich"-Zeichen nicht dargestellt.
Ich dachte es wäre im Standardzeichensatz?
Bzw wenn ich schreibe "1+1=2http://irgendwas" steht in der Mail "1+1=ttp://irgendwas".
Das Verhalten irritiert mich.

Ich dachte ich hätte ausreichende Angaben zur Kodierung gesetzt.

Kann mich bitte jemand auf meinen Fehler hinweisen?!

Danke und Grüße, Matze

  1. Hi,

    Ich habe einen Link in meiner Mail mit ?id=2 (z.B.),
    leider wird mir aber das "Ist gleich"-Zeichen nicht dargestellt.
    Ich dachte es wäre im Standardzeichensatz?
    Bzw wenn ich schreibe "1+1=2http://irgendwas" steht in der Mail "1+1=ttp://irgendwas".
    Das Verhalten irritiert mich.

    http://de.wikipedia.org/wiki/Quoted-printable

    MfG ChrisB

  2. Hallo Matze,

      
    $header = "MIME-Version: 1.0\r\n";  
    $header.= "Content-type: text/plain; charset=utf-8\r\n";  
    $header.= "Content-Transfer-Encoding: 8bit\r\n";  
    
    

    sollte dies wider Erwarten das Problem nicht lösen, lade bitte eine empfangene, missgestaltete Testmail in Deinen Webspace hoch und verweise hier darauf!

    Gruß aus Berlin!
    eddi

    1. Hallo,

      $header = "MIME-Version: 1.0\r\n";
      $header.= "Content-type: text/plain; charset=utf-8\r\n";
      $header.= "Content-Transfer-Encoding: 8bit\r\n";

      
      > sollte dies wider Erwarten das Problem nicht lösen, lade bitte eine empfangene, missgestaltete Testmail in Deinen Webspace hoch und verweise hier darauf!  
        
      danke das wars.  
      @ ChrisB:  
      "Content-Transfer-Encoding: quoted-printable\r\n" hatte ich auch vergeblich versucht.  
        
      Also ok, das war es fast. Die "ist gleich"-Zeichen kommen jetzt zwar an, aber die äöü nicht. Zumindest nicht bei der Mailadresse meiner Domain.  
      Es könnte also am Server liegen? Also Anbieter anschreiben?  
        
      Ist es eigentlich sinnvoll "Content-Transfer-Encoding: quoted-printable\r\n" und "Content-Transfer-Encoding: 8bit\r\n" anzugeben? Nein, nur eine Angabe oder?  
        
      Ich hab an meine Yahoo-Adresse noch eine Testmail geschickt aber für gewöhnlich dauert die Zustellung da etwas länger, ich kann also im Moment nicht sagen wie die Mails da ankommen.  
        
      Danke und Grüße, Matze
      
      1. Hallo,

        Ich hab an meine Yahoo-Adresse noch eine Testmail geschickt aber für gewöhnlich dauert die Zustellung da etwas länger, ich kann also im Moment nicht sagen wie die Mails da ankommen.

        ok, sie kommen auch ohne öäü, aber mit korrekt dargestellten "ist gleich"-Zeichen an. Das selbe Ergebnis wie bei der Adresse meiner Domain also.

        Was kann ich noch tun?

        Danke und Grüße, Matze

    2. Hallo,

      hier die Mail:
      ### Mail-Anfang ###

      X-Account-Key: account5
      X-UIDL: '1n"!H3O!!hWk!!+f&!!
      X-Mozilla-Status: 0000
      X-Mozilla-Status2: 00000000
      X-Mozilla-Keys:
      Return-Path: root@burningsun.fit-4net.de
      X-Spam-Checker-Version: SpamAssassin 3.2.3 (2007-08-08) on
       server09.ultraserver.org
      X-Spam-Level:
      X-Spam-Status: No, score=-98.7 required=5.0 tests=AWL,USER_IN_ALL_SPAM_TO
       autolearn=ham version=3.2.3
      X-Original-To: MEINE_ADRESSE
      Delivered-To: web30p2@server09.ultraserver.org
      Received: from server09.ultraserver.org (localhost.localdomain [127.0.0.1])
       by server09.ultraserver.org (Postfix) with ESMTP id 37A1563C10A
       for <MEINE_ADRESSE>; Mon,  4 Feb 2008 05:35:21 +0100 (CET)
      Received: from burningsun.fit-4net.de (burningsun.fit-4net.de [62.146.108.250])
       by server09.ultraserver.org (Postfix) with SMTP id 12AC163C06D
       for <MEINE_ADRESSE>; Mon,  4 Feb 2008 05:35:21 +0100 (CET)
      Received: (qmail 15205 invoked by uid 99); 4 Feb 2008 04:35:10 -0000
      Date: 4 Feb 2008 04:35:10 -0000
      Message-ID: 20080204043510.15204.qmail@burningsun.fit-4net.de
      To: MEINE_ADRESSE
      Subject: DER BETREFF
      MIME-Version: 1.0
      Content-type: text/plain; charset=utf-8
      Content-Transfer-Encoding: 8bit
      From: DER_ABSENDER mailrobot@DOMAIN.TLD
      X-Virus-Scanned: ClamAV using ClamSMTP
      X-UIDL: '1n"!H3O!!hWk!!+f&!!

      Hallo Mütze,

      (...mailtext)
      ?id=27
      (...mailtext)

      ### Mail-Ende ###

      Es sieht also so aus, als ob alle Zeichen ordentlich ankommen.
      Trotzdem zeigt mir der Thunderbird die äöü als Fragezeichen an.
      Unter Ansicht->Zeichenkodierung habe ich UTF-8 eingestellt.

      Was bereitet mir denn hier den Ärger? :(

      Danke und Grüße, Matze

      1. Moin,

        Content-type: text/plain; charset=utf-8

        Hallo Mütze,

        Es sieht also so aus, als ob alle Zeichen ordentlich ankommen.
        Trotzdem zeigt mir der Thunderbird die äöü als Fragezeichen an.
        Unter Ansicht->Zeichenkodierung habe ich UTF-8 eingestellt.

        was viel wichtiger ist: Trägst du die Umlaute auch UTF-8-codiert in den Mailtext ein? Deine Beschreibung klingt eher so, als würdest du sie in irgendeiner Latin1-Codierung (ISO-8859-x, Windows-1252) hineinschreiben - und das wären dann in UTF-8 ungültige Byte-Sequenzen.

        So long,
         Martin

        --
        Die letzten Worte des stotternden Beifahrers:
        Frei... frei... frei... freilich kommt da was!!
        1. Hallo,

          was viel wichtiger ist: Trägst du die Umlaute auch UTF-8-codiert in den Mailtext ein? Deine Beschreibung klingt eher so, als würdest du sie in irgendeiner Latin1-Codierung (ISO-8859-x, Windows-1252) hineinschreiben - und das wären dann in UTF-8 ungültige Byte-Sequenzen.

          der Text der Mail wird per PHP generiert, also eigentlich so wie er auch dargestellt werden sollte.
          Jetzt mal den ganzen Code:~~~php

          $mailtxt = "Hallo Mütze";
          $empfanger = $_POST['newsmail'];
          $betreff = "Testmail";
          $header = "MIME-Version: 1.0\r\n";
          $header .= "Content-type: text/plain; charset=utf-8\r\n";
          $header .= "Content-Transfer-Encoding: 8bit\r\n";
          #$header .= "Content-Transfer-Encoding: quoted-printable\r\n";
          $header .= "From: Testmailer mailrobot@domain.tld\r\n";
          mail($empfanger, $betreff, $mailtxt, $header);

            
          Wo müsste ich denn noch die Kodierung einstellen?  
          Ich dachte, das hätte ich mittlerweile?  
          Achso, wie ihr seht spiel ich noch mit dem Header rum,  
          daher das auskommentierte quoted-printable.  
            
          Grüße, Matze
          
          1. Lieber Matze,

            Jetzt mal den ganzen Code:~~~php

            $mailtxt = "Hallo Mütze";

              
            in welcher Codierung ist Dein PHP-Script gespeichert? Wenn dieser Quelltext in ISO-8859-X oder Windows-1251 gespeichert ist, dann ist klar, dass die Sonderzeichen nicht nach UTF-8 interpretiert werden können. Da hilft dann nur noch `$mailtext = utf8_encode($mailtext);`{:.language-php}.  
              
            Liebe Grüße aus [Ellwangen](http://www.ellwangen.de/),  
              
            Felix Riesterer.
            
            -- 
            ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
            
            1. Hallo,

              Jetzt mal den ganzen Code:~~~php

              $mailtxt = "Hallo Mütze";

              
              >   
              > in welcher Codierung ist Dein PHP-Script gespeichert? Wenn dieser Quelltext in ISO-8859-X oder Windows-1251 gespeichert ist, dann ist klar, dass die Sonderzeichen nicht nach UTF-8 interpretiert werden können. Da hilft dann nur noch `$mailtext = utf8_encode($mailtext);`{:.language-php}.  
                
              arg, da hätte ich auch drauf kommen können. \*klatsch  
              Vor allem hab ich mir erst gestern das Gegenstück angesehn und genug Hinweise gab es ja auch. man man...  
                
              Gut, dann muss ich den Editor noch umstellen und kann ins Bett,  
              ich bin übermüdet :)  
                
                
              Danke und Grüße, Matze
              
              1. echo $begrüßung;

                [...] Da hilft dann nur noch $mailtext = utf8_encode($mailtext);.
                arg, da hätte ich auch drauf kommen können. *klatsch

                Wenn du mit der Funktion arbeitest, kannst du auch gleich bei ISO-8859-1/Latin1/Windows-1252 bleiben. Das Umwandeln einer Kodierung, die nur 255 Zeichen darstellen kann in eine mit deutlich mehr Möglichkeiten bringt dir keinen Mehrwert, da du ja eh nur 255 Zeichen verwenden kannst. Wenn du die Vorteile von UTF-8/Unicode nutzen willst, musst du komplett umsteigen.

                echo "$verabschiedung $name";

                1. Hallo,

                  [...] Da hilft dann nur noch $mailtext = utf8_encode($mailtext);.
                  arg, da hätte ich auch drauf kommen können. *klatsch

                  Wenn du mit der Funktion arbeitest, kannst du auch gleich bei ISO-8859-1/Latin1/Windows-1252 bleiben.

                  in dem Dokument bleib ich dann auch bei ISO-8859-1, in der Regel benutze ich aber eigentlich UTF-8. Ich war zu übermüdet.

                  Grüße, Matze