Mails des Zeichensatzes iso-8859-1 werden nicht dargestellt


tklustig

Erfahrenes Mitglied
#1
Hallo Leute,
da in einem anderen Thread die Profis mit ihrem Latein am Ende waren, eröffne ich einen neuen Thread in der Hoffnung, durch eine Aktualisierung der Problematik das Problem in den Griff zu bekommen. Das Problem liegt darin, dass Mails mit folgendem
PHP:
var_dump(utf8_encode(imap_fetchbody($mailbox, $mail, 1)));
[*]string(2246) " ------=_NextPart_001_0005_01D3C9FB.4A9DB4A0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Dies ist eine Testmail mit Anh=E4ngen: Ein Versuch zu kucken, ob der Inhalt angezeigt wird! ------=_NextPart_001_0005_01D3C9FB.4A9DB4A0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
[*]

[*]Dies ist = eine Testmail mit Anh=E4ngen:
[*]

[*]Ein = Versuch zu kucken, ob der Inhalt angezeigt = wird!
[*]------=_NextPart_001_0005_01D3C9FB.4A9DB4A0-- "
nicht angezeigt werden. Meine Klasse übergeht sie schlichtweg. Ursächlich dafür, dass besagter Mailinhalt nicht in das Array verfrachtet wird ist die gekapselte Methode checkbody() Wenn ich die PHP-Funktion htmlentities weglasse, bekomme ich einen Inhalt, der allerdings nur Kauderwelsch ist!
Hier der Mailinhalt ohne die PHP-Funktion htmlentities() für besagte Mails:
Code:
5�m=���Mt��4�=�^6͹]�{^���鮖ةj�j[^�v�������j��{Oj�t�mL�f3���b��X}����
.
.
Weiß jemand Rat?
Benötige echt dringendst Hilfe von Programmieren, die kompetenter in Sachen IMAP sind, als ich es bin!
Hier meine Klasse( der Vollständigkeit halber poste ich alle Methoden)
PHP:
<?php
namespace common\wsl_components;

//Klassen des Frameworks einbinden
use yii\web\NotAcceptableHttpException;
use yii\web\Session;

class IMAP {

    private $server;
    private $user;
    private $port;
    private $password;

//Konstruktor
    public function __construct($server, $user, $port, $password) {
        $this->server = $server;
        $this->user = $user;
        $this->port = $port;
        $this->password = $password;
    }

//Verbindungsaufbau zum Postfach
    public function connect() {
        $session = new Session();
        $mailBox = imap_open("{" . $this->server . ":" . $this->port . "/ssl/novalidate-cert}", "$this->user", "$this->password");
        if (is_resource($mailBox))
            return $mailBox;
        else
            throw new NotAcceptableHttpException(\Yii::t('app', "Die Verbindung zu Ihrem Mailserver konnte nicht hergestellt werden. Vermutlich sind die Konfigurationsdaten Ihrres Mailservers inkorrekt. Informieren sie Ihren Admin!"));
    }

//Mails darstellen
    public function Show_mails($mailbox) {
        $ArrayOfMails = array();
        $ArrayOfBetreff = array();
        $indizie = 0;
        $mails = $this->get_mails($mailbox);
        if (is_array($mails)) {
            foreach ($mails as $mail) {
                $MailContent = $this->get_mail_body($mailbox, $mail);
                $ArrayOfMails[$indizie] = $MailContent;
                $Mailbetreff = $this->get_mail_subject($mailbox, $mail);
                $ArrayOfBetreff[$indizie] = $Mailbetreff;
                $indizie++;
            }
            $ReturnArray = array_merge($ArrayOfBetreff, $ArrayOfMails);
        } else {
            throw new NotAcceptableHttpException(\Yii::t('app', 'Es konnten keine Mails angezeigt werden. Versuchen sie es erneut'));
        }
        return $ReturnArray;
    }

//Mails zählen
    public function Count_mails($mailbox) {
        $message_count = imap_num_msg($mailbox);
        return $message_count;
    }

//Abruf der Mails

    protected function get_mails($mailbox) {
        return imap_sort($mailbox, SORTARRIVAL, 1);
    }

//Ermittlung des Mail-Body und speicherung in eine auswertbare Form

    protected function get_mail_body($mailbox, $mail) {
        $struct = imap_fetchstructure($mailbox, $mail);
        $body = imap_fetchbody($mailbox, $mail, 1);
        return strip_tags(html_entity_decode($this->checkbody( utf8_encode($body), $struct)));
    }

// Ermittlung des Betreff

    protected function get_mail_subject($mailbox, $mail) {
        $header = imap_fetch_overview($mailbox, $mail);
        return imap_utf8($header[0]->subject);
    }

// strukturierte Darstellung des Mailbody
    private function checkbody($body, $struct) {
        if ($struct->subtype != 'PLAIN') {
            if ($struct->encoding == 0) {
                $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;
    }

}
Hier noch ein Link https://www.tutorials.de/threads/re...ody-nicht-wie-erwuenscht.406625/#post-2104586 zum ursprünglichen Thread.
Sofern mir jemand helfen kann wäre ich ihm zu ewigem Dank verpflichtet ;)
 
Zuletzt bearbeitet:

Neue Beiträge