bonjour la mélasse en effet
surtout que nativement, php dispose de quantité de manière de convertir des jeux de caractères.
une fois que tu as traversé récursivement la structure avec un
$structure = imap_fetchstructure($stream, $uid, FT_UID);
si tu arrives au $part_number qui t'interesse (ici un part_number dont le mime_type est du text/plain ou text/html)
1 2
|
$text = imap_fetchbody($stream, $uid, $part_number, FT_UID); |
1. on faire un 1er passage selon le encoding (à ne pas confondre avec charset)
1 2 3 4 5 6
|
if($structure->encoding == 3) {
$text = base64_decode($text);
} else if($structure->encoding == 4) {
$text = quoted_printable_decode($text);
} |
2. ensuite on convertit en UTF8 (perso je préfère à l'iso, mais ca dépend du projet bien sur)
1 2 3 4 5 6 7 8 9
|
// idealement il faudrait faire une boucle pour chercher plutot que prendre le 1er item mais bon, ca a marché pour l'instant
if (isset($structure->parameters[0]) && $structure->parameters[0]->attribute == 'charset') {
$charset = $structure->parameters[0]->value;
$text = mb_convert_encoding($text, "UTF-8", $charset );
} else {
$text = utf8_encode($text); // si par malheur y'a pas de charset dans le mime (jms vu perso...)
}
// $text contient enfin ce qui t'interesse |
Partager