PHP - Recupération du nombre de mails non lu via imap

Résolu/Fermé
CyrionFR Messages postés 19 Date d'inscription mercredi 9 mars 2016 Statut Membre Dernière intervention 6 avril 2018 - Modifié le 14 août 2017 à 05:32
Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 - 16 août 2017 à 17:14
Bonjour,

Je souhaite récupérer le nombre de messages non lus dans une boite mail via imap, j'ai déjà trouvé la solution
:

 $mbox = imap_open("{serveurmail:993/imap/[/contents/215-ssl-secure-sockets-layers ssl]/novalidate-cert}INBOX", "ADRESSE EMAIL", "MOT DE PASSE");
$check = imap_mailboxmsginfo($mbox);
 echo "Nombre de messages non lus : ".$check->Unread;
 imap_close($mbox);



Le script ci-dessus fonctionne, le seul problème est la lenteur d'execution.
J'ai remarqué que quand je recupere le nombre de message non lu d'une boite de reception avec peu de message à l'intérieur, la reponse est immédiate. En revanche j'ai deux tres anciennes boites de reception (avec quelques milliers de messages) ou la, je dois attendre 40secondes-1minute afin d'avoir le resultat de mon script....


Le plus rapide est de passer par la fonction imap_mailboxmsginfo() m'évitant de recuperer tous les mails et de faire une boucle inutile pour verifier chaque mail du dossier INBOX (ce que j'avais fait avant). Cependant même en passant par le fonction imap_mailboxmsginfo() le script est lent....

Si je pouvasi definir la programmation, je le ferai comme cela :
"Si tu peux pas passer par la porte, passe par la fenetre."

Alors quelqu'un connait t-il une feinte pour avoir le nombre de mails non lus d'un boite de reception de façon rapide ? Je pense que vous me repondrez "Tu n'as qu'a supprimer tes mails inutiles", et vous aurez raison...


Bisous !
A voir également:

1 réponse

Pitet Messages postés 2826 Date d'inscription lundi 11 février 2013 Statut Membre Dernière intervention 21 juillet 2022 524
Modifié le 16 août 2017 à 17:15
Salut,

Je ne connais pas bien les fonctions imap_* de PHP, néanmoins un petit tour sur la doc de la fonction : https://www.php.net/manual/fr/function.imap-mailboxmsginfo.php

imap_mailboxmsginfo() vérifie le statut courant de la boîte aux lettres sur le serveur. C'est similaire à l'utilisation de la fonction imap_status(), mais fournie également la taille totale des messages de la boîte aux lettres, ce qui demande un peu plus de temps à l'exécution.

Tu peux donc essayer la fonction imap_status() avec uniquement le drapeau SA_UNSEEN à la place de imap_mailboxmsginfo() pour voir si le délai d'exécution est plus court.

Bonne journée,
0