E-Mail richtig decodieren

MsWord

Mitglied
Hallo,

ich habe ein Script zum Mails auslesen.
Mein Problem ist leider, das ich irgendwie nicht alle Codierungen abgedeckt bekomme.

Nutze ich folgendes:
PHP:
        switch($part->encoding){
            case 0: // 7bit
                $data = quoted_printable_decode($data);
                break;
            case 1: // 8bit
                $data = imap_utf8($data);
                break;
            case 2: // binary
                $data = imap_binary($data);
                break;
            case 3: // Base64
                $data = imap_base64($data);
                break;
            case 4: // quoted printable
                $data = imap_qprint($data);
                if(mb_detect_encoding($data, "auto") !== "UTF-8" && mb_detect_encoding($data, "auto") !== "ISO-8859-1")
                    $data = Encoding::fixUTF8($data);
                break;
        }

Werden mir die meisten Fehlerfrei angezeigt.
Aber nicht alle, bei manchen entsteht dann sowas: Freundliche Grüße

Nutze ich es aber so:
PHP:
        switch($part->encoding){
            case 0: // 7bit
                $data = quoted_printable_decode($data);
                break;
            case 1: // 8bit
                $data = imap_utf8($data);
                break;
            case 2: // binary
                $data = imap_binary($data);
                break;
            case 3: // Base64
                $data = imap_base64($data);
                break;
            case 4: // quoted printable
                $data = imap_qprint($data);
                break;
        }

Werden mir auch die meisten korrekt dargestellt, die mit dem gerade beschriebenen Problem dann auch, dafür andere aber nicht. ?!? Dort erhalte ich dann sowas: f�r

Ich habe schon gefühlt ganz Google durchsucht und bestimmt schon X verschiedene Möglichkeiten ausprobiert. Ich weiß jetzt leider einfach nicht mehr weiter o_O...
 
Hi

Erstens, du mischt hier Transportencodings (Base64 usw.) mit Textencodings (UTF8). Ein Text in Emails hat meistens beides, die schließen sich nicht gegenseitig aus. (Funktionen wie imap_utf8, die beides machen, können verwirrend sein). Und außerdem gibts noch Inhaltstypen (Text, Bild usw.). ...
Zweitens, Charsets detecten und "fixen" funktioniert prinzipiell nur mit Glück, besser gar nicht erst probieren wenn man es vermeiden kann.

...
Schau dir vllt. die Codes in den Kommentaren von http://php.net/manual/de/function.imap-fetchstructure.php an (und die Doku selber auch) (Contenttypbehandlung, Encoding 0 ist nicht quotedprintable, 1 nicht unbedingt UTF8, usw.usw.usw.)

Natürlich ist es auch möglich, dass der Mailinhalt falsch ist (andere Implementierungen sind auch nicht immer richtig) - für sowas könnte ein existierendes Mailprogramm als zweite Meinung helfen, ob es da auch falsch angezeigt wird. (Oder die Datei hier reinstellen (aber als Datei, nicht reinkopiert))
 
Danke schon mal für die Antworten.
Ich habe es schon mit anderen Mail Programmen getestet, dort wird alles Problemlos angezeigt.
Ein Teil meines Codes habe ich sogar aus dem ersten Kommentar deines Links. Nur das musste ich schon abändern damit um den größten Teil lesbar habe, zuvor waren weitaus mehr E-Mails nicht lesbar.
Ich könnte dir E-Mails als Datei per PN schicken aus Datenschutzgründen. Wenn ich mir selbst Mails schicke (über verschiedenste Wege), konnte ich solche E-Mails noch nicht erstellen welche Fehler bereiten. Meine werden komplett Problemlos dargestellt.
 
Zurück