Bonjour,
Je souhaite récupérer une pièce jointe au format csv dans une boite d'un serveur exchange 2007.
La connexion est OK, mais je bloque sur la récupération d'un fichier. Je pense que cela est du à l'accent dans le nom du fichier reçu, car si je test avec la même pièce jointe (rename : suppression accent + re-envoi), je peux la récupérer et la sauvegarder sans pb sur le disque.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| $structure = imap_fetchstructure($mbox,$msgno);
$attachments = get_attachments($structure);
foreach ($attachments as $k => $at) {
$filename = $export_dir.'id_'.$msgno.'_part_'.str_replace('.', '-', $at['part']).'_'.$at['filename'];
$content = imap_fetchbody($mbox, $msgno, $at['part']);
if ($content !== false && strlen($content) > 0 && $content != '') {
switch ($at['encoding']) {
case '3':
$content = base64_decode($content);
break;
case '4':
$content = quoted_printable_decode($content);
break;
}
file_put_contents($filename, utf8_encode($content)); |
Le problème se pose avec
file_put_contents($filename, utf8_encode($content));
Quand le filename a un accent voilà l'erreur :
Warning: file_put_contents(c:/test/id_19_part_2_=?iso-8859-1?Q?r=E9sultat.csv?=) [function.file-put-contents]: failed to open stream: No error in C:\
Je ne sais pas trop comment traiter ce pb.
Merci d'avance pour votre aide.
Partager