[Php] Comment savoir si j'ai des nouveaux mails non lu (compte pop) ?

Bonjour à tous,

Mon but est de créer un tout petit script qui irait voir sur mon compte mail pop si j’ai des nouveaux messages NON LU.

Pour cela, j’utilise les fonctions imap en php :

[cpp]
$mbox = imap_open(’{pop.monsite.fr:110/pop3}INBOX’ ,‘monuser’ ,‘monpass’);
$check = imap_check ($mbox);
echo ’
Nombre de messages : '.$check->Nmsgs;
echo ’
Nombre de messages récents : '.$check->Recent;
$status = imap_status($mbox,"{pop.monsite.fr:110/pop3}INBOX",SA_ALL);
echo ’
Nombre de messages non lus : '.$status->unseen;
$test = imap_headerinfo ($mbox, 1);
echo ’

Recent : '.$test->Recent;
echo ’
Unseen : '.$test->Unseen;
[/cpp]

Et voilà le résultat :

[cpp]
Nombre de messages : 3
Nombre de messages récents : 3
Nombre de messages non lus : 3

Recent : N
Unseen :
[/cpp]

Le problème c’est que lorsque je vais sur ma boite mail et que je lis le premier mail, il reste en statut non lus (quoi que je fasse, j’ai toujours le même résultat que ci-dessus)

Toute idée est la bienvenue (même un script avec fsockopen : je suis en train de regarder ça)

Merci !

Où est ta méthode qui lit le message?

Salut,

Je ne veux pas lire le message (sauf si j’y suis obligé), mais seulement savoir combien j’ai de mails non lus dans ma boite pop.

Si tu ne lis pas le message, pourquoi serait-il marqué comme lu?

Ok, alors je reprend…

J’ai plusieurs boites mail sur différents serveurs POP. J’ai un site web (avec du php et la librairie imap) et je voudrais faire un petit script qui m’affiche le nombre de mails non lu dans chacunes de mes boites mails. S’il y en a, je me rends sur le webmail pour lire le (ou les) mail(s). Plus tard, je retourne sur mon site pour voir si j’ai des nouveaux mails, etc.

C’est plus clair ? :wink:

Je viens d’essayer aussi ça (à la suite du code précédent) :
[cpp]
$overview = imap_fetch_overview ($mbox, ‘1’, 0);
echo ’
3’;
if(is_array($overview)) {
reset($overview);
echo ’
count : '.count($overview);

for ($i=0; $i<count($overview); $i++) {
  echo '

seen : '.$overview[$i]->seen;
echo ’
from : '.$overview[$i]->from;
echo ’
recent : '.$overview[$i]->recent;
echo ’
size : '.$overview[$i]->size;
echo ’
msgno : '.$overview[$i]->msgno;
echo ’
subject : '.$overview[$i]->subject;
}
}
[/cpp]

Résultat :
[cpp]
count : 1

seen : 0
from : =?iso-8859-1?q?Expediteur
recent : 1
size : 953
msgno : 1
subject : Test
[/cpp]

Idem que plus-haut : quand dans le webmail je lis le message, j’ai toujours le résultat que ci-dessus => ça ne marche pas…

OK, je vois mieux, mais je ne comprends pas… Si tu as effectivement lu le message via webmail, il devrait renvoyer seen : 1

Le serveur de messagerie utilisé ne respecte peut être pas exactement la norme… As-tu essayé de regarder ton mail à la main [telnet], pour voir ce qui est réellement envoyé?

Le webmail en question est celui de Yahoo, celui de Free (IMP), ou encore UebiMiau…

Pour Telnet, je ne sais pas à quel endroit je peux avoir l’info (je suppose que c’est avec la commande TOP ou RETR) : j’ai environ 10 lignes, mais à aucun endroit j’ai un SEEN, STATUS, OPEN ou un truc du genre…

Est ce que qq’un peut essayer mon script en voir ce qu’il fait ? (trois paramètres à changer : serveur pop, user et pass…)