Extraire une pièce jointe après réception d'email

Description

Ce script permet d'extraire une pièce jointe d'un email reçu coté client et de l'enregistrer dans un dossier quelquonque en utilisant les fonctions imap propre à php.

Source / Exemple :


<?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);
}
}
}

?>

Conclusion :


Voilà, le script est terminé. Maintenant, vous pouvez faire ce que vous voulez de votre pièce jointe !.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.