bonjour, je me suis confronté également a ce problème et après avoir fait une synthèse des différentes réponse voici un code qui fonctionne. après l'envoie par stmp je récupère le nombre d’émail envoyés
PROCEDURE TransfererEmail(NbEmailEnvoyé=0) //NbEmailEnvoyé sert a ne pas lire tous les mails de la boite de réception et arrête le traitement //quand le traitement a traité tous les mails envoyés MaSessionIMAP est un EmailSessionIMAP MonMessage est un Email i,k sont des entiers
//Repert_PJ est une chaîne="C:\TMP\MailTest\" sDomainExpediteur est une chaîne sListeDossiers est une chaîne sRepTransfert est une chaîne="MsgEnvoyé" sRepmail est une chaîne ok est un booléen
//ma conexion imap MaSessionIMAP..AdresseServeur = Serveur_Smtp MaSessionIMAP..Nom = Expediteur MaSessionIMAP..MotDePasse = ePass
EmailChangeTimeOut(30) EmailParamètre(emailParamètreMode,1)
SELON Securité CAS 1 //aucune MaSessionIMAP..Option = emailOptionDéfaut MaSessionIMAP..Port = 143 CAS 2 //tls MaSessionIMAP..Option = emailOptionSécuriséTLS MaSessionIMAP..Port = 993 CAS 3 //ssl MaSessionIMAP..Option = optionSSL MaSessionIMAP..Port = 993 FIN
Message("Connexion IMAP en cours...") Sablier(Vrai) ok=EmailOuvreSession(MaSessionIMAP)
//liste des dossiers du serveur sListeDossiers=EmailListeDossier(MaSessionIMAP,LstDossierTous+LstDossierType) //Trace(sListeDossiers)
//dossier de transfert sRepmail="Sent" //par defaut //je cherche mon dossier de transfert SI Position(sListeDossiers,sRepTransfert)=0 ALORS //non trouvé SI EmailAjouteDossier(MaSessionIMAP,sRepTransfert) ALORS //création du dossier ok sRepmail=sRepTransfert FIN SINON // Trace(sRepStoresfx+" trouvé") sRepmail=sRepTransfert FIN
EmailChangeDossier(MaSessionIMAP,"Inbox") Multitâche(10)
k=EmailNbMessage(MaSessionIMAP) Message(k+" Emails trouvé dans "+EmailDossierCourant(MaSessionIMAP))
SI NbEmailEnvoyé=0 ALORS NbEmailEnvoyé=k FIN ok=EmailLitEntêteDernier(MaSessionIMAP,MonMessage) //, emailexpediteur,expediteur) i=0 TANTQUE PAS MonMessage..EnDehors _ET_ i<NbEmailEnvoyé // toastaffiche("début transfert i="+i) sDomainExpediteur=MonMessage..Expediteur // Trace("ID:"+MonMessage..ID+" "+MonMessage..Sujet,DateVersChaîne(MonMessage..DateRéception)) SI sDomainExpediteur~=Expediteur OU sDomainExpediteur="" ALORS // Trace("ID:"+MonMessage..ID+" "+sDomainExpediteur) SI EmailLitMessage(MaSessionIMAP,MonMessage,MonMessage..ID) ALORS // trace("lecture ok") SI EmailCopie(MaSessionIMAP,MonMessage,sRepmail) ALORS Multitâche(10) // trace("copie ok "+MonMessage..ID+" "+sRepmail) SI EmailSupprimeMessage(MaSessionIMAP,MonMessage) ALORS // trace("ID:"+MonMessage..ID+" "+"supprime ok") Multitâche(10) i++ FIN FIN FIN FIN EmailLitEntêtePrécédent(MaSessionIMAP,MonMessage) FIN EmailDétruit(MaSessionIMAP) //vide la corbeille EmailFermeSession(MaSessionIMAP) Sablier(Faux) Message(i+" Emails transérés dans "+sRepmail) |