Bonjour tout le monde,
Je suis actuellement bloqué sur la conception d'un client de messagerie.
J'ai réussi a afficher les informations sur le mail (expéditeur, date, objet, ...), le soucis que j'ai, c'est pour extraire les pièces jointes.
Je m'explique, dans un tableau, où j'ai déjà les informations sur le mail, je doit rajouter une case pour les pièces jointes. Le problème, c'est que je n'arrive pas à récupérer mes pièces jointes (les enregistrer dans un dossier) et mettre dans mon tableau si y a une ou plusieurs pièces jointes faire afficher "OUI" et quand on clique dessus que ça ouvre le(s) pièce(s) jointe(s) et ça les enregistre. Mais je n'arrive pas à les extraire.
Voici le code que j'ai réaliser:
Si vous avez une petite idée je vous en serrez très reconnaissante.
Miala
Modifié par Miala (30 Dec 2008 - 09:35)
Je suis actuellement bloqué sur la conception d'un client de messagerie.
J'ai réussi a afficher les informations sur le mail (expéditeur, date, objet, ...), le soucis que j'ai, c'est pour extraire les pièces jointes.
Je m'explique, dans un tableau, où j'ai déjà les informations sur le mail, je doit rajouter une case pour les pièces jointes. Le problème, c'est que je n'arrive pas à récupérer mes pièces jointes (les enregistrer dans un dossier) et mettre dans mon tableau si y a une ou plusieurs pièces jointes faire afficher "OUI" et quand on clique dessus que ça ouvre le(s) pièce(s) jointe(s) et ça les enregistre. Mais je n'arrive pas à les extraire.
Voici le code que j'ai réaliser:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Liste mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15" />
<meta name="description" content="" />
<meta name="robots" content="all" />
</head>
<body>
<?php
//Fonction qui permet de rechercher selon une adresse mail et un mot de passe les mails correspondant et de les affiicher
//Affiche, le numero du mail, la date, l'expéditeur et le sujet (lien pour ouvrir le mail).
//Et les piéces jointes (lien sur le OUI qui permet d'enregistrer sur l'ordinateur et de les visualiser)
function lecture_mail($boite,$serveur_entrant,$port,$protocole,$identifiant,$mot_de_passe)
{
$boite = "INBOX";
$serveur_entrant = "pop3.bee-post.com";
$port = "110";
$protocole = "pop3";
$identifiant = "utilisateur";
$mot_de_passe = "mpd";
//on ouvre la boite mail
$mail = imap_open ( "{pop3.bee-post.com:110/pop3}INBOX" , $identifiant , $mot_de_passe );
//Nombre de message dans la boite mail
$nbmess = imap_num_msg($mail);
//Recherche et affichage de chaque message
if($nbmess == 0)
{
//Si il n'y a aucun mail
print"
<div align='center'>
<b>Aucun message présent sur le serveur</b>
<br /><br />
</div>
";
}
else
{
//Si y a au moins un mail
print"
<div align='center'>
<b>Vous avez $nbmess message(s) en attente.</b>
<br /><br />
</div>
";
?>
<!-- Tableau qui regroupe les différents éléments qui constitu le mail -->
<center><table>
<tr>
<th width="30px">n°</th>
<th width="200px">Qui l'as envoyé</th>
<th width="250px">Date</th>
<th width="200px">Sujet</th>
<th width="150px">Piéce(s) jointe(s)</th>
</tr>
</table><center>
<?php
for($j=1;$j<=$nbmess;$j++)
{
//Extraction du sujet du message
$header = imap_headerinfo($mail,$j);
//Extraction de la premiére partie du mail
$from1 = $header->from[0]->mailbox;
//Extraction de la seconde partie
$from2 = $header->from[0]->host;
//Mise en forme du mail de l'expéditeur
$from = $from1 .'@'. $from2;
//var_dump ($header->from);
$date = $header->date;
$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);
//}
?>
<!-- Affichage des données sur le mail -->
<form name="mails" action="" method="post">
<input type="hidden" name="origine" value="">
<center><table border="1">
<tr>
<td width="30px"><?php echo $j; ?></td>
<td width="200px"><?php echo $from; ?></td>
<td width="250px"><?php echo $date; ?></td>
<td width="200px"><p><a href="lire_mail.php?sujet=<?php echo imap_fetchbody($mail, $j, 1); ?>"><?php echo $sujet; ?><a></p></td>
<td width="150px"><?php echo $nom_fichier; ?></td>
</tr>
</table></center>
</form>
<?php
}
// 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+");
//Fermeture du fichier
fclose($newfichier);
}
}
if ($nom_fichier == TRUE)
{
echo "OUI";
}
else
{
echo "NON";
}
}
lecture_mail($boite,$serveur_entrant,$port,$protocole,$identifiant,$mot_de_passe);
?>
</body>
</html>
Si vous avez une petite idée je vous en serrez très reconnaissante.
Miala
Modifié par Miala (30 Dec 2008 - 09:35)