OVH Cloud OVH Cloud

connexion POP3

5 réponses
Avatar
nntpserver.tele2.fr
Bonjour,

j'ai fait un script qui parse les emails que je recois, et lorsqu'il s'agit
d'un certain type d'email, met à jour une base de donnée.

Je fais donc une connexion sur un serveur POP3.
Avant j'avais un email chez club-internet et ca marchait bien, maintenant
j'ai un mail chez ovh et là le comportement est différent.

En effet, tout d'abord je lui demande le nombre de messages dans la BAL.
S'il me répond 150 par exemple, je lui demande de lire d'abord le numéro
150, et là je me rends compte que ce n'est pas le dernier message recu!!!
J'ai fait le test d'envoyer plusieurs emails, et bien c'est toujours le même
email qui apparait en dernier.

Lorsque je lui demande de m'afficher TOUS les emails je m'apercois qu'ils
sont dans le désordre le plus total, il n'y a aucune régle apparente, les
nouveaux mails de tests que je viens d'envoyer apparraissent au beau milieu
(par exemple avec le numéro 75).

Normalement, la logique veut que les message s'empilent non?
En tout cas le serveur POP devrait renvoyer les messages dans un ordre
logique en utilisant soit le champs date soit le champs udate.
C'est le cas avec clubinternet, bouygtel.fr et wanadoo.

J'ai essayé aussi avec une connexion TELNET, et l'ordre est le même.

Donc la seule solution de retrouver les derniers emails recu est de lire
ENTIEREMENT la mailbox et de vérifier UN PAR UN les emails afin de voir si
je les ai déjà lu ou non et ne traiter que ceux qui ne l'ont pas déjà été
(ce qui implique de stocker CHAQUE email dans une base ou un fichier pour
les identifier).
Du coup le script prends enormement de temps.
Il faut savoir que rien que la fonction imap_headers prend plus d'une minute
pour me récuperer uniquement un court entete des 600 emails qui sont dans ma
boite.

Connaissez vous une autre solution?

En effet, lorsque j'utilise OUTLOOK pour lire mes mails sur cette meme
messagerie et que je clique sur "envoyer/recevoir" il ne lui faut pas plus
de 2 secondes pour savoir si j'ai des nouveau mails ou non, et si oui, alors
il sait tout de suite combien il doit en télécharger!!
Comment fait-il pour aller aussi vite??
je voudrais bien qu'on m'explique!!

A mon avis, ce sont les fonctions imap de php qui ne sont pas assez
puissante, qu'en pensez vous?
Toutes necessitent le téléchargement de tous les emails. Par exemple la
fonction imap_sort télécharge tous les emails pour les trier, un truc de
fou.
La fonction imap_search ne marche pas avec les serveurs POP.


merci de votre aide

Rod

5 réponses

Avatar
Lionel
Bonjour,
Bonjour


Connaissez vous une autre solution?
oui, tu récupères les uid des tous tes mail (c'est rapide comme

commande sauf si t'as 10000 mails, mais là tout sera lent).

A chaque intérrogation tu regardes les nouveaux uid. pour ces uid tu
récupères les headers des mail. s'il l'un de ces mail est nouveau tu le
traite.

résultat :
tu ne récupère qu'une liste que tu traites.
puis les headers des nouveau uid.
et enfin les nouveaux mail.

N'oublie pas cependant que quelque soit la méthode, sur une boite
contenant beaucoup de mail tu auras du mal à atteindre des bonnes perfs.

A mon avis, ce sont les fonctions imap de php qui ne sont pas assez
puissante, qu'en pensez vous?
Je ne suis pas de la même opinion que toi. Les fonctions imap de php

sont performantes, c'est le protocole IMAP en lui même qui est "lent" au
vu de toutes les opérations réalisées. Mais IMAP4 et POP3 ne sont pas
destinés aux même usages. Pour ton cas POP3 me semble plus adapté.

Lionel.

Avatar
Rod
merci de ta réponse.
Cependant, j'ai mal du m'exprimer.
Je me connecte sur un serveur POP3 (comme l'indique le titre du thread),
donc la notion d'uid n'existe pas!!!
L'uid est spécifique à une connexion IMAP (c'est d'ailleurs l'interet
principal de IMAP).

L'uid renvoyé lors d'une connexion POP correspond au champs "msg_num" qui
renvoit la position du message dans la liste et qui change à chaque fois que
tu supprimes un message.
La méthode dont tu parles n'est donc pas valable (c'est celle que je fais
sur un servuer IMAP).

Quand au délai, je pense vraiment que c'est la fonction IMAP de PHP qui est
mauvaise, sinon pourquoi Outlook est capable de déterminer en moins d'une
seconde le nombre exact de nouveau messages??
Au fait les fonctions IMAP de PHP fonctionnent avec les 2 types de serveurs:
IMAP et POP3.
je ne connais d'ailleurs aps d'autres fonctions qui seraient spécifiques à
POP3

Rod
Avatar
Lionel
donc la notion d'uid n'existe pas!!!
L'uid est spécifique à une connexion IMAP (c'est d'ailleurs l'interet
principal de IMAP).
il ne me semble pas : en telnet si tu lance la comande : UIDL il te

retourne une liste d'uidl.

Quand au délai, je pense vraiment que c'est la fonction IMAP de PHP qui est
mauvaise, sinon pourquoi Outlook est capable de déterminer en moins d'une
seconde le nombre exact de nouveau messages??
c'est normal c'est par ce qu'outlook renvoie le nombre de message recent

et pas de nouveau message. il y a une fonction imap en php qui te
retourne ce même résultat très rapidement : imap_check. L'objet retourné
t'offre la possibilité d'obtenir le nombre de mail récent.
Au fait les fonctions IMAP de PHP fonctionnent avec les 2 types de serveurs:
IMAP et POP3.
je ne le savais pas.

je ne connais d'ailleurs aps d'autres fonctions qui seraient spécifiques à
POP3
non, mais au niveau efficacité, je ne suis pas cetain que les fonction

imap pour popper soient aussi rapides que des fonctions pop dédiées au pop.

Rod
Lionel


Avatar
WebRod
oui en fait je me suis mal exprimé.
Je parlais du champs UID retourné par la fonction imap de php!!

Effectivement avec telnet, ou en communiquant avec les sockets, il y a bien
un UID, j'ai donc laissé tomber les fonction imap de php (qui sont censé
bien marcher avec POP3 mais je les trouve inutilisable sauf peut etre si
l'on a pas besoin de conserver une copie sur le serveur)

Rod
"Lionel" a écrit dans le message de news:
41f68d8f$0$2531$
donc la notion d'uid n'existe pas!!!
L'uid est spécifique à une connexion IMAP (c'est d'ailleurs l'interet
principal de IMAP).
il ne me semble pas : en telnet si tu lance la comande : UIDL il te

retourne une liste d'uidl.

Quand au délai, je pense vraiment que c'est la fonction IMAP de PHP qui
est
mauvaise, sinon pourquoi Outlook est capable de déterminer en moins d'une
seconde le nombre exact de nouveau messages??
c'est normal c'est par ce qu'outlook renvoie le nombre de message recent

et pas de nouveau message. il y a une fonction imap en php qui te retourne
ce même résultat très rapidement : imap_check. L'objet retourné t'offre la
possibilité d'obtenir le nombre de mail récent.
Au fait les fonctions IMAP de PHP fonctionnent avec les 2 types de
serveurs:
IMAP et POP3.
je ne le savais pas.

je ne connais d'ailleurs aps d'autres fonctions qui seraient spécifiques
à
POP3
non, mais au niveau efficacité, je ne suis pas cetain que les fonction

imap pour popper soient aussi rapides que des fonctions pop dédiées au
pop.

Rod
Lionel




Avatar
Lionel
oui en fait je me suis mal exprimé.
Je parlais du champs UID retourné par la fonction imap de php!!

Effectivement avec telnet, ou en communiquant avec les sockets, il y a bien
un UID, j'ai donc laissé tomber les fonction imap de php (qui sont censé
bien marcher avec POP3 mais je les trouve inutilisable sauf peut etre si
l'on a pas besoin de conserver une copie sur le serveur)


Je pense que t'as raison de laisser tomber les fonction imap pour faire
du pop3. Imap_php pour imap et une bonne petite classe faite maison pour
le pop3 et les vaches seront bien gardées ;-)

Lionel