Resultat von imap_fetchbody nicht wie erwünscht

tklustig

Erfahrenes Mitglied
Hallo Leute, meine Intention ist es, zunächst mal die Mailinhalte von einem IMAPServer abzuholen und in eine Datenbank zu transferieren. Später müssen dann auch die Anhänge in die Datenbank transferiert werden! Zunächst aber geht es um die Mailinhalte. Folgender Code liefert mir zwar die Mailinhalte, allerdings bei weitem nicht so, wie gewollt. Teilweise werden die deutschen Zeichensätze nicht korrekt dargestellt, teilweise ist es nur Kuaderwelsch, teilweise wird der Inhalt so dargestellt, wie erwartet. Ich habe einen Anhang beigefügt, um aufzuzeigen, was im argen liegt! Outlook zeigt übrigens alle Mails korrekt an. Ideen ,was ich besser machen kann bzw. wie ich die Mailinhalte korrekt auslese?
Hier die Klasse:
PHP:
class IMAP {

    public $server;
    public $user;
    public $port;
    public $password;

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

    public function connect() {
        $mailBox = imap_open("{" . $this->server . ":" . $this->port . "/ssl/novalidate-cert}", "$this->user", "$this->password");
        return $mailBox;
    }

}
und hier der felherhafte Mailinhalt(wird, sobald das Problem hier in den Griff zu kriegen ist, zu einer Methode der Klasse)
PHP:
     $Imap = new IMAP($IMAPServer, $Username, $IMAPPort, $Password);
        $mailbox = $Imap->connect();
        $headers = imap_headers($mailbox);
        $section = empty($attachments) ? 1 : 1.1;
        for ($i = 0; $i < count($headers); ++$i) {
            echo "Header: " . $headers[$i] . "<br>";
            echo "Body: " . trim(utf8_encode(quoted_printable_decode(
                                    imap_fetchbody($mailbox, $i + 1, $section)))) . "<br>";
            echo "<hr/>";
        }
 

Anhänge

  • IMAPContact.jpeg
    IMAPContact.jpeg
    705,4 KB · Aufrufe: 6
Hallo, ich habe an dem Thema auch ewig gehangen. Ich habe irgendwo einmal folgenden Code gefunden:

PHP:
/**
     * strukturierte Darstellung des Mailbody
     */
    private function checkbody($body,$struct)
    {
        global $mailbox;

        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;
    }

in der Gänze sieht der Mailabruf bei mir wie folgt aus:

PHP:
/**
     * Verbindungsaufbau zum Postfach
     */
    protected function connect_to_box()
    {
        $permission = $this->get_permission('Mail_system_global');

        $this->mailbox = imap_open($permission->server.'INBOX/'.$this->configurations['communication']['mail']['mailbox'], $permission->username, $permission->token, NULL, 1) or die('Cannot connect: ' . print_r(imap_errors(), true));
     
        if($this->mailbox)
        {
            return true;
        }
        return false;
    }

/**
 * Abruf der Mails
 */
protected function get_mails()
    {
        return imap_sort($this->mailbox, SORTARRIVAL, 0, NULL, 'UNSEEN');
    }
 
    /**
     * Ermittlung des Mail-Body und speicherung in eine auswertbare Form
     */
    protected function get_mail_body($mail)
    {
        $struct = imap_fetchstructure($this->mailbox,$mail);
        $body = imap_fetchbody($this->mailbox,$mail,1);
        $this->mail_body = strip_tags(html_entity_decode($this->checkbody($body,$struct)));
    }

/**
     * Ermittlung des Betreff
     */
    protected function get_mail_subject($mail)
    {
        $header = imap_fetch_overview($this->mailbox, $mail);
        $this->mail_subject = imap_utf8($header[0]->subject);
    }

public function get_mails()
{
 
 if($this->connect_to_box())
        {
            $mails = $this->get_mails();
         
            if($mails)
            {
                foreach($mails as $mail)
                {
                    $this->get_mail_body($mail);
                    $this->get_mail_subject($mail);
                }
            }´
        }
}
 
Vielen ,vielen Dank für diesen objektorientierten Code. Ich habe ihn noch nicht getestet, was ich morgen machen werde! Eine Frage vorab:
Stellt Deine öffentliche Methode get_mails() den Mailinhalt bei Dir so dar, dass ich ihn bei mir in meine Datenbank transferieren kann??
Ich habe mich darauf konzentriert ,alle Dateianhänge runterzuladen, so dass sie physikalisch auf meinem Webserver liegen.
Letztendlich transferiere ich die Anhänge über das ftp-Protokoll lauf unseren Webspace und lösche sie sodann von meinem lokalen Verzeichnis. Wenn du willst kann ich diesen Code, quasi als Ausgleich, ebenfalls hier veröffentlichen, zumindest den Teil, der nicht mit dem Framework zusammenhängt:rolleyes:
 
naja, ich mache da noch ein paar Schritte mehr. Aber auch nur, da ich nur Teile einer Mail im die DB speichere.

Bzgl. der Anhänge: Dazu hab ich auch mal was geschrieben. Finde den Code nur gerade nicht. :google:

Aber letztendlich kannst du einen Anhang auch anhand encoding des Mailbody ermitteln.
 
Habe Deine Klasse geringfügig abgeändert, damit sie mit meinem Konstruktor funktioniert. Bisher hatte ich immer ein TimeOut-Problem
Weißt du,wie das TimeOut-Problem in den Griff zu kriegen ist? Lokal kann ich an der PHP.INI rumschrauben, wie ich lustig bin, aber sobald die chose zum Hoster geht, sieht's finster aus.
Ich möchte den Transfer in die Datenbank eigentlich nicht mittels Transaktionen bewerkstelligen müssen:mad:
Der physikalische Transfer aller Anhänge klappt tadellos. Ich transferiere alle Anhänge in einen (temporären) Aliasordner und von dort über das FTP-Protokoll auf unseren Webspace. Danach gehen die Daten in die Datenbank, so dass Sie unabhängig vom IMAP-Server aufgerufen bzw. angezeigt werden können...
Eine Frage zu Deiner Klasse habe ich noch: Warum definierst du in Deiner gekapselte Methode checkbody() eine globale Variable $mailbox?? Die wird doch überhaupt nicht verwendet. Weder global noch lokal!
Außerdem ist der Rückgabewert Deiner gekapselten Methode get_mails() ein Array, du behandelst ihn allerdings als Boolean. Das kann doch nicht durchgehen, oder?
Ich habe Deinen abgeänderten Code noch nicht getestet; er müsste funktionieren, was meinst Du? Hier der Code:
[
PHP:
<?php

/*
  Diese Klasse liefert alle Methoden, um für mein Mailprojekt die nötigen Operationen bereitszustellen. Da ich unter großem Zeitdruck stehe,
  verzichte ich auf Ballast wie Properties(getter und setter),Try/catch und Destruktoren, die hier durchaus Sinn machen würden! Außerdem implementiere ich
  alle Methoden so, wie ich sie benötige. Ich berücksichtige beispielsweise nicht ,dass eine Verbindung auch ohne SSL-Zertifizierung möglich
  wäre...Mein Nachfolger kann diese Features gerne einbauen!
  Feedback oder Rückfragen bitte an:tklustig.thomas@gmail.com
*/

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) {
        $mails = $this->get_mails();
        if (!is_array($mails)) {
            foreach ($mails as $mail) {
                $this->get_mail_body($mailbox, $mail);
                $this->get_mail_subject($mailbox, $mail);
            }
        } else {
            throw new NotAcceptableHttpException(\Yii::t('app', 'Es konnten keine Mails angezeigt werden. Versuchen sie es erneut'));
        }
    }

//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);
        $this->mail_body = strip_tags(html_entity_decode($this->checkbody($body, $struct)));
    }

// Ermittlung des Betreff

    protected function get_mail_subject($mailbox, $mail) {
        $header = imap_fetch_overview($mailbox, $mail);
        $this->mail_subject = 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;
    }

}
 
Zuletzt bearbeitet:
Hallo,

ich habe dir nur einen Ausschnitt aus meinen Code gegeben. die Variable $this->mailbox befülle ich in der Funktion connect_to_box. Ist die Verbindung erfolgreich kommt ein Wert vom Typ Ressource zurück. Ansonsten ein Boolean. Kannst du den eine Verbindung zum Mailserver herstellen? Ich vermute der Timeout kommt daher, dass die Verbindung zum Postfach scheitert. Ist das ein privater Host oder ein shared? Ist auf dem Host php_imap aktiviert? Ansonsten stellt sich die Frage, wie du die Funktion aufrufst? Ich habe das ganze mittels eines Background-Prozess ala Queues abgebildet. Über diese rufe ich periodisch meine Klassen aus und lese die Mails aus. Vielleicht gibt es für Laravel (das war doch das von dir benutzte Framework oder?) auch. Ich hatte zu testzwecken immer noch in der imap_open-Funktion den Terminus or die('Cannot connect: ' . print_r(imap_errors(), true) drinnen. Liefert das beí dir einen Rückgabewert auf den Server?

nun zu deinen Fragen:
Warum definierst du in Deiner gekapselte Methode checkbody() eine globale Variable $mailbox??

Wie gesagt, ich habe den Code auch nur irgendwo gefunden und nie refactort. Ist also nur ein Artefakt und kann eigentlich raus.

Außerdem ist der Rückgabewert Deiner gekapselten Methode get_mails() ein Array, du behandelst ihn allerdings als Boolean.
Jain :)

statt
PHP:
$array = [];
if(!empty($array))
{
    echo "Array befüllt";
}
 else {
    echo "Array leer";
}

kannst du auch die Kurzform
PHP:
$array = [];
if($array)
{
    echo "Array befüllt";
}
 else {
    echo "Array leer";
}

verwenden. Über diese Form kannst du auch auch prüfen ob eine Variable NULL oder Leer ('') ist.

Ich habe Deinen abgeänderten Code noch nicht getestet; er müsste funktionieren, was meinst Du? Hier der Code:

Auf den ersten Blick: ja und nein Die Verbinung scheint ok zu sein. Jedoch verwendest du noch die Variablen $this->body und $this->subject, jedoch sind beide nicht initialisiert. Da müsste bei deinem Aufbau noch ein Return rein.
 
Klappt inzwischen ohne Timeout. Allerdings bekomme ich nicht für alle Mails den Inhalt zurück.(s.Anhang).
Prinzipiell werden Mails mit Anhängen nicht angezeigt. Alleiniges Kriterium ist das jedoch nicht. Auch eine andere Mail ohne anhänge wird nicht korrekt ausgelesen. Irgendetwas stimmt mit deiner gekapselten Methode get_mail_body() nicht. keine Ahnung, was das sein könnte?! Hier nochmals der Code, wie ich ihn momentan verwende. Weiß du Rat?
PHP:
<?php

/*
  Diese Klasse liefert alle Methoden, um für mein Mailprojekt die nötigen Operationen bereitszustellen. Da ich unter großem Zeitdruck stehe,
  verzichte ich auf Ballast wie Properties(getter und setter),Try/catch und Destruktoren, die hier durchaus Sinn machen würden! Außerdem implementiere ich
  alle Methoden so, wie ich sie benötige. Ich berücksichtige beispielsweise nicht ,dass eine Verbindung auch ohne SSL-Zertifizierung möglich
  wäre...Mein Nachfolger kann diese Features gerne einbauen!
  Feedback oder Rückfragen bitte an:tklustig.thomas@gmail.com
*/

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($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;
    }

    /*
      /**
     *     Gmail attachment extractor.
     *
     *     Downloads attachments from Gmail and saves it to a file.
     *     Uses PHP IMAP extension, so make sure it is enabled in your php.ini,
     *     extension=php_imap.dll
     *
     */

//lädt alle Mailanhänge runter
    public function FetchAttachements($mailbox, $Mail_max, $Folder) {
        /* get all new emails. If set to 'ALL' instead
          of 'NEW' retrieves all the emails, but can be
          resource intensive, so the tranfer parameter
          Mail_max puts the limit on the number of emails downloaded. */
        $emails = imap_search($mailbox, 'ALL');
        /* useful only if the above search is set to 'ALL' */
        /* if any emails found, iterate through each email */
        if (is_array($emails)) {
            $count = 1;
            /* put the newest emails on top */
            //rsort($emails);
            foreach ($emails as $email) {
                /* get information specific to this email */
                $overview = imap_fetch_overview($mailbox, $email, 0);
                /* get mail message */
                $message = imap_fetchbody($mailbox, $email, 2);
                /* get mail structure */
                $structure = imap_fetchstructure($mailbox, $email);
                $attachments = array();
                /* if any attachments found... */
                if (isset($structure->parts) && count($structure->parts)) {
                    for ($i = 0; $i < count($structure->parts); $i++) {
                        $attachments[$i] = array(
                            'is_attachment' => false,
                            'filename' => '',
                            'name' => '',
                            'attachment' => ''
                        );
                        if ($structure->parts[$i]->ifdparameters) {
                            foreach ($structure->parts[$i]->dparameters as $object) {
                                if (strtolower($object->attribute) == 'filename') {
                                    $attachments[$i]['is_attachment'] = true;
                                    $attachments[$i]['filename'] = $object->value;
                                }
                            }
                        }
                        if ($structure->parts[$i]->ifparameters) {
                            foreach ($structure->parts[$i]->parameters as $object) {
                                if (strtolower($object->attribute) == 'name') {
                                    $attachments[$i]['is_attachment'] = true;
                                    $attachments[$i]['name'] = $object->value;
                                }
                            }
                        }
                        if ($attachments[$i]['is_attachment']) {
                            $attachments[$i]['attachment'] = imap_fetchbody($mailbox, $email, $i + 1);
                            /* 4 = QUOTED-PRINTABLE encoding */
                            if ($structure->parts[$i]->encoding == 3) {
                                $attachments[$i]['attachment'] = base64_decode($attachments[$i]['attachment']);
                            }
                            /* 3 = BASE64 encoding */ elseif ($structure->parts[$i]->encoding == 4) {
                                $attachments[$i]['attachment'] = quoted_printable_decode($attachments[$i]['attachment']);
                            }
                        }
                    }
                }
                /* iterate through each attachment and save it */
                foreach ($attachments as $attachment) {
                    if ($attachment['is_attachment'] == 1) {
                        $filename = $attachment['name'];
                        echo"$filename wurde soeben auf ihren Webspace hochgeladen..<br>";
                        if (empty($filename))
                            $filename = $attachment['filename'];

                        if (empty($filename))
                            $filename = time() . ".dat";

                        /* prefix the email number to the filename in case two emails
                         * have the attachment with the same file name.
                         */
                        $fp = fopen($Folder . $email . "-" . $filename, "w+");
                        fwrite($fp, $attachment['attachment']);
                        fclose($fp);
                    }
                }
                if ($count++ >= $Mail_max)
                    break;
            }
        }
        /* close the connection */
        imap_close($mailbox);
    }

}

Ein var_dump auf $ArrayOfMails bestätigt meine Vermutung:
Das erste,zweite,dritte,vierte und sechste Element wird nicht gefüllt. WARUM??
Code:
array(10) { [0]=> string(0) "" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(1530) "Ja ist soweit richtig. So ist die mündliche Prüfung abgelaufen. Mit powerpoint Präsentation und Fach Fragen der Prüfer. Wir machen das jetzt einfacher. Gib mir mal eure büro Nummer. Dann rufe ich morgen mal an. Dann können wir da besser drüber sprechen. Und alle fragen in einem Telefonat klären. MfgVon meinem Huawei-Mobiltelefon gesendet-------- Originalnachricht --------Betreff: mündliche PrüfungVon: Thomas Kipp An: soeren.kolze@web.deCc: Habe das noch nicht so ganz begriffen. Die mündliche Prüfung, die du überdurchschnittlich bestanden haben willst – bitte korrigiere mich, sofern ich falsch liege- ist doch im Großen und Ganzen die Vorstellung des Projektes, welches du in yii2 programmiert und bei uns vor Ort präsentiert hast. Dazu war sicherlich eine Projektdokumentation nötig, welche die Prüfer bewertet haben. Diese Bewertung zzgl. diverser Fachfragen zu Deinem Projekt ergaben dann die mündliche Note, richtig?Mein Interesse liegt jetzt vor allem an der Projektdokumentation.Auf die schriftlichen Prüfungen kann man sich adäquat vorbereiten, indem man mindestens die letzten drei Prüfungsjahre wiederholt(2*3  +3 *280 Minuten Bearbeitungszeit) .Adäquate Projektdokumentationen, um den didaktischen Aufbau nachzuvollziehen, habe ich keine. Insofern wäre ich über die Deinige, bestenfalls als Powerpoint-Präsentation, sehr erfreut, vor allem, da sie die Prüfer überzeugt hat.Stimmen meine Mutmaßungen über deine mündliche Prüfung??Happy CodingThomas Kipp-Praktikant-  " [5]=> string(0) "" [6]=> string(757) " Guten Tag
.
.
 

Anhänge

  • error.jpg
    error.jpg
    523,7 KB · Aufrufe: 4
Zuletzt bearbeitet:
so aus der Ferne lässt sich das schwer sagen. Gibt es einen Unterschied in den Mails, die gehen, und die die nicht gehen? Haben die vielleicht unterschiedliche encodings? Wa passiert, wenn du bei der Funktion get_mail_body() das strip_tags rausnimmst? Bist du dir sicher, dass es ein Problem beim Auslesen ist und nicht bei der Speicherung in die Datenbank (oder beim Auslesen)?
 
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 allerdinfs nur Kauderwelch ist! Damit kann ich auch nix anfangen. Weiß sonst noch jemand Rat?
Möchte eigentlich nur ungerne einen neuen Thread deswegen aufmacheno_O
Die Mails wurden alle mit Outlook erstellt und verschickt. insofern haben sie wohl auch alle denselben Zeichensatz(encoding). Gespeichert werden die Mails noch gar nicht. Sie werden mittels der Klasse nur ausgelesen. Die Ausgabe erfolgt nicht mehr in der Klasse, sondern in der View!Es muss sich also um einen Bug im Code der Klasse handeln, kann gar nicht anderst sein...
So lese ich die Mails übrigens aus:
PHP:
$ArrayOfIMAP = $Imap->Show_mails($mailbox);
//$Imap->FetchAttachements($mailbox, 10, $folder);
?>

<table border='3'>
    <tr><td width='500' bgcolor=#F2F5A9>Betreff</td><td width='900' bgcolor=#A9BCF5>Mailinhalt</td></tr></table>
<?php
$CountOfElements = count($ArrayOfIMAP);
for ($i = 0; $i < $CountOfElements / 2; $i++) {
    ?><?= "<table border='1'>"; ?>
    <?=
    "<tr><td width='500' bgcolor=#FAAC58>" . $ArrayOfIMAP[$i] . "</td><td width='900' bgcolor=#01DF01>" . $ArrayOfIMAP[$i + $CountOfElements / 2] . "</td></tr>";
}
?><?= "</table"; ?>
 
Zuletzt bearbeitet:
Naja, die Frage ist worin sich die Mails Testnachricht und AW: mündliche Prüfung in ihrem Body unterscheiden. Hast du mal eine Mail, die nicht geht genommen und dir folgendes ausgeben lassen:

PHP:
echo imap_fetchstructure($mailbox, $mail);
echo imap_fetchbody($mailbox, $mail, 1);
echo $this->checkbody($body, $struct);
echo html_entity_decode($this->checkbody($body, $struct));
 

Neue Beiträge

Zurück