encoding Funktionen

tklustig

Erfahrenes Mitglied
Hallo Leute, da mir bei diesem https://www.tutorials.de/threads/mails-des-zeichensatzes-iso-8859-1-werden-nicht-dargestellt.406630/ Thread offensichtlich niemand helfen kann bitte ich um Infos darüber
  1. welche Encoding-Funktionen php bereitstellt(eine vollständige Übersicht über alle Funktionen)
  2. einen Link zu einer Quelle, die sämtliche Mailheaderkonstellationen gut verständlich aufzeigt
Hier die Methode, die nicht alle Fälle berücksichtigt, insbesonders nicht die für den Subtype "MIXED"
PHP:
// strukturierte Darstellung des Mailbody
    private function checkbody($body, $struct) {
        if ($struct->subtype != 'PLAIN') {
            if ($struct->encoding == 2) {
                $body = imap_utf8($body);
            }
            if ($struct->encoding == 0) {
                //$body = trim(substr(quoted_printable_decode($body), 0, 100));
                $body = base64_decode($body);
            }
            if ($struct->encoding == 3) {

                $body = base64_decode($body);
            }
            if ($struct->encoding == 4) {

                $body = quoted_printable_decode($body);
            }
        } else {
            if ($struct->encoding == 3) {

                $body = base64_decode($body);
            }
            if ($struct->encoding == 4) {

                $body = quoted_printable_decode($body);
            }
        }

        $body = nl2br(htmlentities($body));
        return $body;
    }
 
Hast du auch schon Freund Google konsultiert. Eine allgemeine Übersicht gibt es meines Erachtens nicht.

Hier die Methode, die nicht alle Fälle berücksichtigt, insbesonders nicht die für den Subtype "MIXED"

Folgende Zeile schließt alles ein, was nicht plain ist:
PHP:
if ($struct->subtype != 'PLAIN') {
 
Das beantwortet nicht meine Frage!
Die lautete doch, mit welchen PHP-Funktionen außer den aufgezeigten ich diese Fälle unterziehen soll. Darin liegt das Problem!
Sicher habe ich diverse Suchmaschinen befragt. Eben weil es keine allgemeine Übersicht gibt suche ich in diesem Forum Rat. Es wäre doch möglich, dass der eine oder andere sich mit IMAP Servern und PHP tiefer beschäftigt hat um mir zu helfen. Ich erwarte keine Lösung von Seiten diverser Foren, diese Hoffnung habe ich für dieses Problem bereits aufgegeben, aber ein Wink mit dem Zaunpfahl wäre doch möglich, oder?
Ich bin bestimmt nicht der erste und einzige, der sich mit der Encodingproblematik beschäftigt.....
 
Es scheint, als würde PHP über den Wert des "Content-Transfer-Encoding"s abstrahieren und eine eigene Aufzählung definieren, eben die von dir genutzten Konstanten:
http://php.net/manual/en/function.imap-fetchstructure.php (es empfiehlt sich übrigens, keine Magic Numbers zu verwenden, sondern die Konstantennamen an sich).

Eine schnelle Google-Suche ergab, dass Content-Transfer-Encoding zumindest im RFC 2045 definiert ist. Möglicherweise gibt es auch neuere RFCs. Sieh dir dort Abschnitt "6.1 Content-Transfer-Encoding Syntax" an:
RFC 2045 hat gesagt.:
encoding := "Content-Transfer-Encoding" ":" mechanism

mechanism := "7bit" / "8bit" / "binary" / "quoted-printable" / "base64" / ietf-token / x-token
Die ersten 5 stellt PHP genauso bereit mit den oben erwähnten Konstanten. Die letzten zwei fässt PHP wohl unter OTHER zusammen. Anscheinend gibt PHP aber auch manchmal numerisch 6 zurück, was keiner der in der PHP Doku genannten Konstanten entspricht, siehe https://github.com/ddeboer/imap/issues/64.
Du könntest im PHP Quelltext selbst inspizieren, wann genau das geschieht: https://github.com/php/php-src/search?q=imap_fetchstructure&type=Code
 
Zurück