Invité
Invité n'ayant pas de compte PHPfrance
13 nov. 2006, 00:12
j'ai trouvé ce script pour réaliser l'opération. Les fonctions utilisées permettent-elles de résoudre les pb de sécurité?
<?php
//Tout d'abord, on ouvre une boite mail
$mail = imap_open("{nom serveur ou localhost ou autres/pop3}INBOX",'utilisateur','motdepasse');
//Quitte à la faire, autant le faire pour chaque message !
$nbmess = imap_num_msg($mail);
if ($nbmess == 0)
{
print "
<div align='center'>
<b>Aucun message présent sur le serveur</b>
<br /><br />
</div>
";
}
else
{
for($j=1;$j<=$nbmess;$j++)
{
//Extraction du sujet du message, pour ceux qui voudrait faire un test sur un titre au préalable
$header = imap_headerinfo($mail,$j);
$sujet = $header->subject;
//Extraction de la structure du message
$struct = imap_fetchstructure($mail,$j);
// On compte le nombre de partie dans la structure du message
if ($struct->type == 1)
{
$nbrparts = !$struct->parts ? "1" : count($struct->parts);
}
//On place le code binaire de la pièce dans un tableau
$piece = array();
for($h=2;$h<=$nbrparts;$h++)
{
$part = $struct->parts[1] ;
//Extraction du code binaire de la pièce jointe
$piece = imap_fetchbody($mail,$j,$h);
//Le 3 est spécifique à l'encodage en base64 (le plus répandu) pour les pièces jointes.
if ($part->encoding == "3")
{
//Comptage du nombre de parametres
$nbparam = count($part->parameters)
for ($i = 0; $i < $nbparam ; $i++)
{
//Récupération du nom de la pièce jointe
$param = $part->parameters[$i];
if ($param->attribute == "NAME")
{
$nom_fichier = $param->value;
}
else
{
$nom_fichier = "Nom de fichier introuvable";
}
}
//Décodage du code binaire de la pièce jointe
$piece[$h] = imap_base64($piece[$h]);
}
$nom_fichier = str_replace(".doc","",$nom_fichier) ;
//Ouverture du fichier et création s'il n'existe pas
$newfichier = fopen("C:/".$nom_fichier.$h.".doc","w+");
//Ecriture dans le fichier
fwrite($newfichier,$piece[$h]);
//Fermeture du fichier
fclose($newfichier);
}
}
}
?>