note 47480 rejected from ref.imap by boo
| From: | boo@php.net | Date: | Tue, 29 Nov 2005 00:33:05 +0000 |
| Subject: | note 47480 rejected from ref.imap by boo | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-99268@lists.php.net to get a copy of this message | ||
Note Submitter: sirber at gmail dot com
----
Here's a function to create a full structure with decoded bodies. Usefull for handeling complex
MIME messages.
// Construction de la structure du message
$struct = imap_fetchstructure($mbox, $mnum);
// Recherche des body et décodage de la structure
buildparts($mbox, $mnum, $struct);
function buildparts ($mbox, $mnum, &$struct, $pno = "")
{
switch ($struct->type)
{
case 1: // multipart
// Recherche des sous partie
$i = 1;
while (list($j) = each ($struct->parts))
buildparts ($mbox, $mnum, $struct->parts[$j], $pno . "." . $i++);
break;
case 2: // message
// Décodage de la sous partie (et de ses sous parties)
buildparts ($mbox, $mnum, $struct->parts[0], $pno);
break;
default:
$part = substr ($pno, 1);
// On save le part_number
$struct->part_number = $part;
// On fetch le body de la partie
$struct->body = imap_fetchbody($mbox, $mnum, $part);
// On le décode
if($struct->encoding == 3)
$struct->body = imap_base64($struct->body);
elseif($struct->encoding == 4)
$struct->body = imap_qprint($struct->body);
// On décode les charset
if ($struct->paraneters[0]->attribute == "CHARSET")
{
$charset = $struct->paraneters[0]->value;
if ($charset == "utf-8")
$struct->body = utf8_decode($struct->body);
if ($charset == "utf-7")
$struct->body = imap_utf7_decode($struct->body);
}
break;
}
}