php imap - get body and make plain text

$data = imap_fetchbody($this->imapStream, $Part->uid, $Part->path, FT_UID | FT_PEEK);
if ($Part->format === 'quoted-printable' && $data) {
    $data = quoted_printable_decode($data);
}

This is required for mails with

Content-Transfer-Encoding: quoted-printable

But for mails with

Content-Transfer-Encoding: 8bit

simply imap_fetchbody is enough.

Above code was taken from a cake-php component created for fetching mails from mail boxes throgh IMAP.


This happens because the emails are normally Quoted-printable encoded. The = is a soft line break and =20 is a white space. I think, you could use quoted_printable_decode() on the message so it shows correctly. About the blank emails, I don't know, I would need more details.

Basically:

//get message body
$message = quoted_printable_decode(imap_fetchbody($inbox,$email_number,1.1)); 

Tags:

Mysql

Php

Email