Soyez le premier à donner votre avis sur cette source.
Snippet vu 31 681 fois - Téléchargée 28 fois
<html> <head><title>Exemple IMAP Webmail</title></head> <body> <?php function get_mime_type(&$structure) { $primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER"); if($structure->subtype) { return $primary_mime_type[(int) $structure->type] . '/' .$structure->subtype; } return "TEXT/PLAIN"; } function get_part($stream, $msg_number, $mime_type, $structure = false,$part_number = false) { // CETTE FONCTION PERMET DE RECUPERER UNIQUEMENT LE TEXTE DU MAIL (PAS LES PIECES JOINTES) if(!$structure) { $structure = imap_fetchstructure($stream, $msg_number); } if($structure) { if($mime_type == get_mime_type($structure)) { if(!$part_number) { $part_number = "1"; } $text = imap_fetchbody($stream, $msg_number, $part_number); if($structure->encoding == 3) { return imap_base64($text); } else if($structure->encoding == 4) { return imap_qprint($text); } else { return $text; } } if($structure->type == 1) /* multipart */ { while(list($index, $sub_structure) = each($structure->parts)) { if($part_number) { $prefix = $part_number . '.'; } $data = get_part($stream, $msg_number, $mime_type, $sub_structure,$prefix . ($index + 1)); if($data) { return $data; } } // END WHILE } // END MULTIPART } // END STRUTURE return false; } // END FUNCTION echo "<table width='750' border='0' rules='none' height='16'> <HR>"; $colorFond = "#CCCCCC"; echo "<tr bgcolor='#FFFFFF'>"; echo "<td width='10' bgcolor=$colorFond></td>"; echo "<td width='80' bgcolor=$colorFond colspan ='2'>Date</td>"; echo "<td width='50' bgcolor=$colorFond>Email</td>"; echo "<td width='60' bgcolor=$colorFond>Objet</td>"; echo "<td width='190' bgcolor=$colorFond>Mail</td>"; echo "</tr>"; $mbox = imap_open ("{IPHOST:110/pop3}", "LOGIN", "PASS"); // CONNEXION AU SERVEUR POP echo "<p><h1>Gestion des email</h1>\n"; $headers = imap_headers ($mbox); // RECUPERATION DES ENTETES if ($headers == false) { echo "Pas de mail en cours !\n"; // PAS DE MAILS :-( } else { while (list ($key,$val) = each ($headers)) { // ON PASSE TOUS LES MAILS EN REVUE $header = imap_headerinfo($mbox, $key+1, 100, 100); $dateMail = date("d/m/Y", $header->udate); $from = $header->from; $objetMail = $header->fetchsubject; $objetMail = imap_utf8($objetMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues $objetMail = utf8_decode($objetMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues $emailExp = $from[0]->mailbox."@".$from[0]->host; $corpsMail = get_part ($mbox, $key+1, "TEXT/PLAIN"); $corpsMail = imap_utf8($corpsMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues $corpsMail = utf8_decode($corpsMail); // PERMET DE NE PAS AVOIR ISO=... pour les caracteres accentues $idtMail= $key+1; // AFFICHAGE DES MAILS DANS UN TABLEAU echo "<tr bgcolor='#FFFFFF'>"; echo "<td width='10' bgcolor=$colorFond><img src='".$rep."image/lettre.gif' border='0'></td>"; echo "<td width='90' bgcolor=$colorFond><font face='Arial' size='2'>$dateMail</font></td>"; echo "<td width='50' bgcolor=$colorFond><font face='Arial' size='2'>$emailExp</font></td>"; echo "<td width='60' bgcolor=$colorFond><font face='Arial' size='2'>$objetMail</font></td>"; echo "<td width='190' bgcolor=$colorFond><font face='Arial' size='2'>$corpsMail</font></td>"; echo "</tr>"; } } imap_close($mbox); ?> </body> </html>
J'ai recopié et utilisé votre exemple qui a fonctionné du premier coup. Mais j'ai un petit soucis avec l'expéditeur Paypal pour ses mails de confirmation de paiement : le corps du mail n'est pas pris en compte (le paramètre $corpsMail reste vide)(*) Mon problème est que je voudrais pouvoir vérifier automatiquement si un client (je suis un vendeur) a bien effectué son paiement sur paypal, soit à partir de son propre compte paypal, soit par CB. Avez-vous une solution ?
J'utilise Zimbra.
(*) cela fonctionne pour tous les autres expéditeurs
Merci d'avance, cordialement,
Répondre
while (list ($key,$val) = each ($headers)) {
$header = imap_headerinfo($mbox, $key+1, 100, 100);
En effet, quant il boucle sur plus de 8 messages, mon navigateur affiche une erreur du genre "La connexion a été reinitialisée". Le probleme ne se pose pas pour moins de 8 messages.
Merci bien de me trouver une solution.
Chose que je ne peut pas faire non plus avec les nombreux autres codes glané sur le net à tel point que je me demande si Imap peut le faire.
le code semble marcher chez moi, mais il ne m'affiche que les messages qui n'ont jamais ete affiche. Si jai par exemple un nouveau message dans ma boite mail, et que je lance le webmail de boris, il va bien m'afficher le mail, mais si je refais la meme chose une deuxieme fois, il va me dire que ma boite est vide...
Avez vous ce probleme ?
P.S.
j'utilise gmail
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.