begin process at 2012 05 27 20:07:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > EXEMPLE IMAP POUR LECTURE DE MAIL

EXEMPLE IMAP POUR LECTURE DE MAIL


 Information sur la source

Note :
8,25 / 10 - par 8 personnes
8,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :E-Mail / Messagerie Classé sous :imap, exemple, mal, lecture, webmail Niveau :Initié Date de création :29/11/2002 Date de mise à jour :20/03/2003 09:06:17 Vu :24 712

Auteur : boris

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (66)
Ajouter un commentaire et/ou une note


 Description

Salut,

Je me lance dans ma première publication. Ce code permet de consulter les mails d'un compte par les primitives IMAP de PHP.

C'est un exemple tout simple pour comprendre le fonctionnement, ca n'a pas pour ambition d'etre un client webmail. Mais c'est realisable... Une idée pour le LABO si certains sont interressés pour la realisation d'un webmail, je suis partant !

@+
Boris

//Un peu de personalisation avant de l'executer :
// IPHOST = IP du serveur ou nom
// LOGIN = profil de connexion
// PASS = mot de passe

Source

  • <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>
<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> 

 Conclusion

Amélioration à venir : fonction de suppression d'un mail, gestion des pieces jointes.


 Sources de la même categorie

Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ... par cod57
Source avec Zip Source avec une capture FORMULAIRE VERS COURRIEL BASIQUE AVEC CONTRÔLE CAPTCHA ANTI ... par cod57
Source avec Zip CHAT EN PHP ET JQUERY par pitchoubrazil
Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO... par aventurier19
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope

 Sources en rapport avec celle ci

COURTE ET SIMPLE FONCTION RÉCURSIVE POUR LECTURE DE RÉPERTOI... par mbdx
Source avec Zip Source avec une capture CLASSE LECTUREENLIGNE - POUR LES SITES DE SCANTRAD OU ... par tiger222
Source avec Zip Source avec une capture GESTION DE MAILING par espada
PETIT LECTEUR DE RSS SANS PRÉTENTION ... par LocalStone
Source avec Zip [PHP5] SMARTDIR : LES ITÉRATEURS EN PHP - LECTURE INTELLIGEN... par malalam

Commentaires et avis

Commentaire de Kirua le 30/11/2002 01:21:47

sympa comme possibilité :) merci :)
j'ai mis 8

Commentaire de SmallToad le 05/12/2002 03:17:17

Je ne suis pas sur qu'avec le nouveau PHP ça va marcher (voire mon tut sur la nouvelle facon d'utiliser les variables de formulaire)

Commentaire de boris le 05/12/2002 08:47:15

Chez moi ca tourne avec PHP 4.2.0, pas de pb.

Commentaire de odyseus le 20/03/2003 08:43:57

POur ma part get_mime_type n'est pas connu comme fonction et je suis sous php4.1.2

Commentaire de boris le 20/03/2003 09:08:53

Bien vu ! J'ai mis à jour la source, mais voici la definition de la fonction:

function get_mime_type(&$structure)
{
   $primary_mime_type = array("TEXT", "MULTIPART","MESSAGE", "APPLICATION", "AUDIO","IMAGE", "VIDEO", "OTHER");
   if($structure-&gt;subtype) {
   return $primary_mime_type[(int) $structure-&gt;type] . '/' .$structure-&gt;subtype;
   }
   return "TEXT/PLAIN";
}

Commentaire de nerix le 27/03/2003 15:57:16

très utile merci...
Je v voir si ça tourne chez moi...

Commentaire de Kengne le 15/05/2003 19:44:36

c'est vraiment cool

Commentaire de PaTaTe le 08/12/2003 01:04:05

Fatal error: Call to undefined function: imap_open()

Commentaire de Enneka_NK le 10/07/2004 01:39:14

Problème!

Fatal error: Call to undefined function: imap_open() in /var/www/free.fr/4/b/******/***/******** on line 70

Ligne 70:
$mbox = imap_open("{193.252.22.108:110/pop.wanadoo.fr}", "LOGIN", "PWD");   // CONNEXION AU SERVEUR POP

:(

Commentaire de windu le 10/07/2004 16:10:39

PaTaTe & Enneka_NK -&gt; kan vous avez une erreru comme celle la, c'est parce que vous n'avez pas installé la librairie php_imap. Pour la mettre, si vous avez easyPHP c'est très simple.
Vous lancez EasyPHP, puis clic droit sur l'icone ds le systray-&gt; configuration-&gt; Extension PHP. La apparait la liste des librairies proposées ya plus qu'à cocher celle que vous voulez (php_imap pour les fonction IMAp, ou PHP_gd2 pour les fonction graphique...)
Mais sinon ton système est bien fait. De plus, ca m'a permis de trouver la fonction ke g cherchai pour masquer les ISO=... ("utf8_decode"). voila ca vaut bien 8!

Commentaire de Enneka_NK le 10/07/2004 16:28:49

Non-non. Depuis que j'ai installé, php_imap est activé... :(
C'est ca que j'pige pas. ::'(

Je cherche depuis 1mois un Webmail pour mon site. Mais tous ceux que j'ai marchent soit sous Linux uniquement, soit ils déconnent...

Help meeeeee :'(

Commentaire de PaTaTe le 11/07/2004 23:43:12

L'erreur n'est pas résolu de mon coté. Peut etre que cela vient du fait que PHP ne tourne pas sous Apache comme c'est souvent le cas (j'en suis pas sur mais bon ...)

Enneka_NK > Essaie squirrelmail, il tourne tres bien chez moi et est customisable grace a des plugins, gere plusieurs langues et est assez personnalisable. Teste toujours.

Commentaire de Enneka_NK le 11/07/2004 23:53:11

J'ai essayé pas mal de trucs, dont IlohaMail qui marche nikel!
Donc j'vais voir aussi ce que tu m'as proposé!

Merci!
++
nk

Commentaire de PaTaTe le 11/07/2004 23:56:08

pas de koi :)

Commentaire de boris le 12/07/2004 10:50:44

Bonjour,

J'ai été un peu absent... Alors what's the problem of my code...

Pour l'erreur : "Fatal error: Call to undefined function: imap_open() in /var/www/free.fr/4/b/******/***/******** on line 70"
Ca tourne sur Free ? Il me semble que Free a desactivé la lib imap, non ? Si c'est bien le cas, les fonctions ne sont pas connues d'ou l'erreur de Enneka_NK.

La source tourne chez vous en local ou pas ?
Moi, je le fais tourner sur easyphp en local avec un serveur mail local et ca passe.

PaTaTe, dans quelle config utilises-tu la source ?

Commentaire de windu le 13/07/2004 12:38:30

moi j'ai quand meme 1 question: lorsque je fais 1 systeme similaire à celui-ci tout marche correctement, mais si je cherche à me connecter en mode IMAP(port 143) et non plus en mode POP (port 110) sur mon compte wanadoo (imap.wanadoo.fr) ca marche pas j'ai une erreur #11001 qui signifie "Host not found"... si quelqu'un a 1 idée ou sait ou se trouve l'erreur... merci

Commentaire de PaTaTe le 13/07/2004 12:57:59

boris > IIS/PHP en local avec serveur Mail local (non IIS). Peut être cela vient du serveur mail ? Lequel utilise-tu ?

Commentaire de windu le 13/07/2004 19:24:13

oki... voici la réponse a ma question: le serveur imap.wanadoo.fr n'existe pas!!! il est même impossible de se connecter en mode IMAP sur Wanadoo!! seulement avec POP... pkoi ils en ont pas fait? je sais pas, mais ca craint! sinon si vous voulez connaitre les adresses des serveur pop et imap des FAI voici l'url: http://www.carre-amelot.net/ecm/acces_libre/dossiers/services_de_messagerie/services_de_messagerie.pdf c la ke j'ai trouvé la réponse a ma question... si ca peut vous aider?

Commentaire de Enneka_NK le 13/07/2004 19:33:15

J'essayerai tout ca quand je rentrerai chez moi.
L'erreur, enfait, ca me le faisiat en local avec php_imap activé...
Mais le probleme, je pense que c'est parceque j'utilisais pop.wanadoo.fr comme serveur IMAP mdrr...

Désolé du dérangement; je fais mes valises et je sors =]

Je réessayerai avec imap.free.fr en local.
++
NK

Commentaire de boris le 15/07/2004 13:18:21

Mon serveur mail est MS Exchange, mais je ne suis pas sur que ton erreur (Fatal error: Call to undefined function: imap_open() ) vienne de la... Tu es en local ou chez un FAI ?

Commentaire de scoder le 28/07/2004 15:43:37

mon hébergeur (azotobac) m'a assuré que la librairie imap est installée, pourtant j'ai toujours l'erreur
Call to undefined function: imap_open()

Commentaire de boris le 29/07/2004 09:33:07

Je pige pas... Cette erreur est bien l'erreur d'une extension non installée... Tu peux faire un phpinfo pour verifier que tu as bien imap enable ?

Commentaire de scoder le 29/07/2004 15:23:23

je ne vois pas imap enable, mais voilà l'url du phpinfo. en tout cas l'hébergeur m'a certifié que la librairie est installée...
http://scoder.azotobac.com/info.php

Commentaire de boris le 29/07/2004 18:38:02

normalement tu as un pavé imap comme le ftp... Ils ont une fonction email specifique, c'est peut-etre ça qu'ils appelent imap, non ?
As-tu essayé sur un config perso type easyphp sur ton pc ?

Commentaire de scoder le 29/07/2004 18:48:40

j'ai un paquet d'erreurs quand j'utilise l'imap de mon hébergeur en local. J'ai essayé avec mon adresse wanadoo (pop.wanadoo.fr), et je vois la liste des mails, mais la  colonne mail à droite reste vide, et j'ai les erreurs suivantes

Notice: Undefined variable: rep in c:\documents and settings\..\webmail.php on line 92

Notice: Undefined variable: prefix in c:\documents and settings\..\webmail.php on line 43

Notice: (null)(): Missing parameter (errflg=3) in Unknown on line 0


Commentaire de boris le 02/08/2004 11:49:26

Ces erreurs ne sont pas génantes, c'est des messages de type notice, juste pour prevenir que les declarations de variables n'ont pas été correctement faites....

Pour les effacer, dans ton fichier php.ini qui se trouve sous windows ou sous l'exe d'apache tu doit avoir :
error_reporting = E_ALL & ~E_NOTICE (affiche toutes les erreurs sauf les notives).

pour la colonne vide, as-tu verifié que $corpsMail était bien écrit ? essai de tester avec un echo avant les passages des fonctions utf8...

Si tu as bien ta lliste, c'est que la connexion fonctionne bien et ca confirme que la lib imap standard n'est pas installée chez ton hebergeur...

Commentaire de astyax le 02/11/2004 10:17:11

Merci beaucoup !!! Ce code est exceptionnel, moi qui n'arrivais pas à afficher que le texte du message depuis 2 semaines, grâce à code, j'y arrive enfin !!! Merci de tout coeur !!!

Commentaire de astyax le 02/11/2004 11:18:24

Recoucou, une question bête mais dont je n'ai pas la réponse... Comment faire, avec ces 2 fonctions, pour lui dire que si le format text/html existe dans le mail, si c'est de l'alternative, de le prendre en premier, et s'il n'y en a pas, de prendre le text/plain ?

En tous cas, c'est déjà super :)

Commentaire de boris le 02/11/2004 13:25:20

Bonjour,

Pour afficher en HTML, il faut jouer avec la fonction get_part et l'attribut $mime_type...

Voici un exemple. Je te laisse affiner la source !

@+
Boris

<?
   // RECUP TEXTE
   $dataTxt = get_part($mbox, $msgno, "TEXT/PLAIN");
  
   // RECUP HTML
   $dataHtml = get_part($mbox, $msgno, "TEXT/HTML");
  
   if ($dataHtml != "") {
   $msgBody = $dataHtml;
   $mailformat = "html";
   } else {
   $msgBody = ereg_replace("\n","<br>",$dataTxt);
   $mailformat = "text";
   }
// Affichage du corps du mail.
  
   if ($mailformat == "text") {
   echo "<html><head><title>Messagebody</title></head><body    bgcolor=\"white\">$msgBody</body></html>";
   } else {
   echo $msgBody;
   }
?>

Commentaire de astyax le 02/11/2004 15:50:36

Merci beaucoup Boris pour ton aide, ça fonctionne
vraiment très bien. Dire que j'étais à deux doigts
de m'ouvrir les veines... Vraiment merci, merci et
merci encore :)

Commentaire de boris le 04/11/2004 13:52:09

De rien, et je suis content pour tes veines ;-)

Commentaire de gipiphi le 16/05/2005 15:14:24

salut!
voici l'erreur de j'ai lorsque j'utilise ce script :

Warning: imap_open(): Couldn't open stream {pop3.club-internet.fr:110/pop3}

est-ce que quelqu'un a une idee ??

merci d'avance

Commentaire de oki972 le 02/06/2005 17:55:16

Merci pour la source, elle fonctionne tres bien.
Mais est ce qu'on peut récupérer les pièces jointes?????
Marquer le mail comme lu, ou le supprimer!!! Aidez moi !!

Commentaire de boris le 15/06/2005 13:23:53

La gestion des pièces jointes n'est pas gérée...
Pour la suppression d'un mail :
<?
imap_delete ($mbox, $idtMail);
imap_expunge ($mbox);
?>

Commentaire de coporto le 15/11/2005 17:39:34

Y a t-il une option qui permet de n'afficher que les message pas encore lu, ou les messages déjà lus seulement?

Commentaire de boris le 16/11/2005 22:01:23

Oui, il faut tester ça : ($header->Unseen == "U" || $header->Recent =="N")
Voila le lien dans la doc : http://www.nexen.net/docs/php/annotee/function.imap-headerinfo.php

Commentaire de coporto le 16/11/2005 22:03:20

merci ^^ j'y ait déjà jeté un coup d'oeil cet aprés midi. Je vais voir ça.

Commentaire de coporto le 16/11/2005 22:04:25

merci ^^ j'y ait déjà jeté un coup d'oeil cet aprés midi. Je vais voir ça.

Commentaire de Foxracing le 30/11/2005 17:33:49

PROBLÈME:

Warning: imap_open(): Couldn't open stream {pop.mail.yahoo.com:110/pop3} in c:\program files\easyphp1-7\www\emailpop3\index02.php on line 68


Gestion des email

Warning: imap_headers(): supplied argument is not a valid imap resource in c:\program files\easyphp1-7\www\emailpop3\index02.php on line 70
Pas de mail en cours !
Warning: imap_close(): supplied argument is not a valid imap resource in c:\program files\easyphp1-7\www\emailpop3\index02.php on line 103

Notice: (null)(): Error logging in. Please visit http://mail.yahoo.com (errflg=1) in Unknown on line 0

Notice: (null)(): Error logging in. Please visit http://mail.yahoo.com (errflg=1) in Unknown on line 0

Notice: (null)(): Error logging in. Please visit http://mail.yahoo.com (errflg=1) in Unknown on line 0

Notice: (null)(): Too many login failures (errflg=2) in Unknown on line 0

IMAP dans easyPHP est OK.

Commentaire de boris le 30/11/2005 18:14:31

Bonjour,

L'accès POP est-il activé chez Yahoo ? C'est une option pour chaque compte : http://help.yahoo.com/help/fr/mail/pop/pop-10.html.

Easyphp peut acceder aux web ? pas de pb de firewall ou autre ?

A+
Boris

Commentaire de oki972 le 01/12/2005 13:07:05

Comment vous utilisez ça les amis ?
($header->Unseen == "U" || $header->Recent =="N")
pour voir si le mail a déjà été lu ou pas?
Perso, j'ai pas compris... un petit exemple ?!

Commentaire de boris le 01/12/2005 13:17:45

if ($header->Unseen == "U" || $header->Recent =="N")
{
// ecrire le code pour les mails non lus
}
else
{
// ecrire le code pour les mails lus
}

mais il faut le faire apres le $headers = imap_headers ($mbox);

A+
Boris

Commentaire de informatique_04 le 31/01/2006 21:28:40

merci boris pour ton code ,rest a gerer les pieces jointes
je t'ncorager pour compliter ton code par la gestion des pieces jointes
bon courage

Commentaire de sletis le 28/03/2006 20:21:16

super ton code boris! aurais tu trouver une solution pour la gestion des pieces jointes?

Commentaire de boris le 28/03/2006 20:52:44

Bonsoir,
Non, je n'ai pas trouvé le temps de finir :-(
Voici une piste : http://developpeur.journaldunet.com/tutoriel/php/051125-php-email-imap-lecteur-5-entetes.shtml
Si certains veulent s'y mettre...

A+
Boris

Commentaire de boulika le 13/10/2006 11:53:05

Bonjour

Super sympa le code, je l'utilise pas mal car plus simple ;). Sinon comment fait ton pour afficher la liste des pièces jointes ? ou meme par exemple afficher l'image joint ?
Merci

Commentaire de astuces_jeux le 05/01/2007 20:14:10

Quelqu'un n'a pas un code pour un webmail ??? sa fait un moment que je cherche :| :) :(
:) (: :(  ): :| :#

Commentaire de Laurent00777 le 31/01/2007 00:40:08

ça marche pas non plus:

Warning: imap_open() [function.imap-open]: Couldn't open stream pop.laposte.net:110/pop3}INBOX in C:\...\mes_mails.php on line 78
Connexion impossible : Can't open mailbox pop.laposte.net:110/pop3}INBOX: no such mailbox

Quelqu'un sait d'où ça vient ?

Commentaire de boris le 31/01/2007 14:39:38

Peux-tu copier la ligne complete ?

Celle qui remplace celle ci :  $mbox = imap_open ("{IPHOST:110/pop3}", "LOGIN", "PASS"); // CONNEXION AU SERVEUR POP

Boris

Commentaire de zequenelle le 31/01/2007 20:59:26

bonjours à tous
je vois que la fonction imap n'est pas validé chez free ?
bon en tout cas avec easy php j'arrive à lire mes mail (d'un compte free) mais juste en local.
après quand je mais le code sur mon site internet (héberger chez free) il me dise que la fonction est inconnue.

quelqu'un sait soit comment activer cette fontion (imap) pour un hébergement chez free
ou alors existe t'il une fonction (semblable) qui tournerais chez free ?

merci !!!

Commentaire de Laurent00777 le 31/01/2007 23:41:31

Tu voudrais pas accèder à ma boite au lettre à tout zhazard, Boris ???

C'est bon, le problème viens que si je ne suis pas déjà connecté sur internet au préalable, la connection ne se fais pas et j'obtiens ce message copié-collé ci-dessus; lorsque la connection est ouverte, ça marche.

Quelqu'un sait peut-être quel code je dois rajouter pour ouvrir la connexion automatiquement à l'ouverture de ma page PHP, sans message de confirmation, sans déconnecter mes firewalls, et pour la refermer dès que je ferme cette même page ?

POP POP POP !!!

A+

Commentaire de boris le 01/02/2007 00:03:06

Oups, ha oui il y a le login et le password... Non, je voulais voir comment tu avais ecrit  le nom de l'hote ! Mais la vérité était ailleurs à priori :-)

Bon code
Boris

Commentaire de hvella le 02/07/2007 20:28:08

Bien joué boris !
t'as l'air de bien connaitre le php !
Moi je lutte depuis une heure pour afficher un message au format HTML AVEC DES ACCENT DANS LE MESSAGE !
Le probleme les accent biensur !
Disons que j'ai un message avec <html><body> téléchargement et sécurité </body></html>
Et bien quand je le passe dans ton code avec les modifs indiquées tout au long des discussions, j'ai bien le code au format HTML avec typemine"text/HTML" mais pas les accent! des ???? a la place.
As tu une idée ?
En tout cas ton code est bien mieux que celui qu'on trouve sur commentcamarche ou autre ! conitnu.
a+

Commentaire de espada le 05/07/2007 09:45:55

ton code marche à merveille, d'ailleurs, je travaille fullment avec.
reste une chose : commnent merquer un mail comme lu?car je ne dois pas le lire une autre fois?
please si vous avez une reponse contactez moi : azzabi2005_saif@yahoo.fr
j'ai mis 10/10

Commentaire de boris le 05/07/2007 10:50:58

Bonjour Hvella,

Je rame aussi pour les accents... Tente ça :

        $corpsMail = get_part ($mbox, $idtMail, "TEXT/PLAIN");
if(strlen(strstr($header->fetchsubject, 'UTF-8')) > 1)
{
$corpsMail = imap_utf8($corpsMail);
$corpsMail = utf8_decode($corpsMail);
}

Des que j'ai trouvé LA solution pour les accents, je publie !

@+
Boris

Commentaire de boris le 05/07/2007 10:52:43

Bonjour Espada,

Pour mettre un mail lu, il faut changer son flag avec la fonction imap_setflag_full

Tu trouveras tout la : http://fr.php.net/manual/fr/function.imap-setflag-full.php

@+
Boris

Commentaire de hvella le 05/07/2007 12:11:05

Bonjour Boris,
merci pour la reponse !
hier g trouvé pour les accents ! enfin pour mon probleme.
J'utilise des pages ISO avec la balise meta comme suit :

meta http-equiv="content-type" content="text/html; charset=iso-8859-1;"

donc les accents sont directement dans le texte brut aussi. pas de &agrut ou autre.
Donc pour lire les mails comme ca g tout simplement retiré la ligne :

//$corpsMail = utf8_decode($corpsMail);

et voila ca marche bien g les accents !
En esperant que cela t'aide un peu !
a++

Commentaire de boris le 05/07/2007 14:19:42

Je vais regarder, Merci !

Boris

Commentaire de Gally le 21/03/2008 00:13:05

Bonjour,

Avec votre exemple je recherche le moyen de retrouver un identifiant unique (UID), mais avec tout les test possible cette identifiant si je supprime un mail change a chaque fois

Pouvez-vous me donné une idée pour résoudre mon problème?

Merci d'avance,
GallyHC

Commentaire de infoimad le 05/04/2008 20:02:30

Bonjour,
pour envoier un email qui à volonté lire, qu'elle adresse mail pour je utilise, en cas je avoire un hostname dans un serveur  pour recevie cette mail.
Merci.

Commentaire de burnedsyn le 24/04/2008 10:02:16

En réponse a Gally :
Pour pouvoir récuperer l'uid d'un mail imap possède une fonction :

int imap_uid  ( resource $imap_stream  , int $msg_number  )

Cette fonction ne fonctionne pas pour une connexion POP3. donc la seul solution que j'ai croisé jusqu'a présent est de sortir des fonctions imap de php en passant par une bonne connexion fsock. voici la fonction que j'utilise :

[code]
    function fetch_UID($message_number)
{
/*on définis les paramètre du compte pop3*/

   $POPMAILSERVER="mail server";
   $account="LOGIN";
   $password="PASS";
/*on a finis de paramètrer on déclare une var pour le retour */

    $retval = 0;
/*ouverture de la connexion*/
    $fp = fsockopen($POPMAILSERVER, 110,$errno, $errstr);
    if (!$fp) {
/*erreur lors de la connexion*/
    echo "ici ERREUR : $errstr ($errno)<br />\n";
}
    if ($fp > 0)
    {
    /*on est connecté : $buf nous permet de récupérer la réponse du serveur en cas d'erreur nous pourrions les tester*/
        $buf = fgets($fp, 1024);
      
        /*On envois le login */
        fputs($fp, "USER $account\r\n");
        $buf = fgets($fp, 1024);
         /*on envois le pass */
        fputs($fp, "PASS $password\r\n");
        $buf = fgets($fp, 1024);
         /*on utilise la commande uidl qui renvois l'uid du message n°*/
        fputs($fp, "UIDL $message_number\r\n");
        $retval=fgets($fp, 4096);
        
        fputs($fp, "QUIT\r\n");
        $buf = fgets($fp,1024);
          
        fclose($fp);
    }
    return substr($retval,6,100);
}

[/code]

Voila
l'utilisation est assez simple

$UID=fetch_UID($msgno);

Voila j'espère t'avoir aidé si tu ne comprend pas tous fais moi un mp je te répondrai avec plaisir.

Tim

Commentaire de burnedsyn le 24/04/2008 10:10:55

petit ajout :
$UID=fetch_UID($msgno);

$partie=explode(",", $UID);
    $S=$partie[1];
    $UI=explode(".", $partie[0]);
    $UID=$UI[0].$UI[1];
    echo("unique id  = $UID<br> Et $S<br>");

Commentaire de zequenelle le 24/04/2008 22:41:26

salut burnedsyn !!!
grace à toi j'ai appris que l'on peut utiliser une autre fonction que imap() pour ouvrir un compte mail...

mais est il possible de faire un webmail sans jamais utiliser cette fonction ?

en gros une fois qu'on est connecté (après les lignes)
fputs($fp, "PASS $password\r\n");
        $buf = fgets($fp, 1024);
est ce qu'on peut utiliser des fonctions comme fread() pour aller " lire " des mails ?

si oui, puis-je avoir quelques précisions ou aide par ce que je nage depuis pas mal de temps pour faire mon webmail sans la fonction imap() !!!

merci

Commentaire de lnilux le 30/06/2009 02:31:48

Merci pour ton code et tous vos commentaires vraiment pratiques.

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

Commentaire de cerveaubooleen le 08/07/2010 03:08:16

Moi aussi j'ai ce problème. Je ne peut pas lire mes anciens messages!

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.

Commentaire de tahinaranarison le 18/03/2011 11:30:43

Bonjour, mon problème se situe ici:
          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.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Webmail Imap : Récupérer des pieces jointes, ou des images [ par kingounet ] Bonjour, mon webmail a pas mal avanc&#233;s, les probl&#232;me de mon autre post est r&#233;solu mais maintenant j'ai un probleme avec les images et l Webmail Perso IMAP sur un autre nom de Domaine. [ par Cacou99 ] Bonjour a tous, Je suis actuellement à la recherche d'une source en php me permettant de me connecter à un compte IMAP d'un autre nom de domaine, je m Webmail et triage des mails [ par astyax ] Salut à tous;voilà, je n'arrive pas à trier les mails de mon webmail. Lorsque j'utilise le code ci-dessous, il ne s'affiche rien... Est-ce que quelqu' Webmail avec Imap [ par mohdaef ] Bonjour à tous. Je suis entrain de réaliser un petit Webmail pour réaliser des transfert de mails. J'utilise la bibliothèque imap de PHP, j'arrive à Imap Webmail Garder la mise en forme des messages reçus ? [ par kingounet ] Bonjour, je d&#233;veloppe actuellement un webmail, c'est un projet personnel. Je me suis inspir&#233; de vos sources et de php.net pour le faire, jus $GLOBALS + utf8_decode() [ par mattdelavega ] BonjourJ'ai mon flash qui envoi par $POST des variables &#224; mon php...petit probl&#232;me ... le format c'est du utf8 !Donc mes lettres accentu&#23 Images d'évenements [ par tony4758 ] Bonjour je voudrais savoir si c'est possible de cr&#233;er un script qui changerai les images &#224; chaques &#233;venements, c'est &#224; dire par ex Lire mail Webmail perso [ par greycats ] Bonjour, Je suis en train de créer un webmail en php j'ai réussi a afficher une boite de réception. J'ai fait un tableau qui permet de les classés. J Mail automatique webmail [ par greycats ] Bonjour, Je suis actuellement en train de créer un webmail en imap. Je reçois correctement les mails et j'arrive à les affichés dans une autre fenê générer une facture via PHP [ par midoxe ] Bonjour, je travail sur une application web, et je dois permettre aux clients de générer leurs facture depuis les données stockées dans la BDD. j'ai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales