PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV (versiones precedentes) → [WD26 - x64] EmailRécupèreTout IMAP - Plantage application
[WD26 - x64] EmailRécupèreTout IMAP - Plantage application
Iniciado por JEROME, 20,sep. 2022 17:23 - 2 respuestas
Publicado el 20,septiembre 2022 - 17:23
Bonjour,

Cela fait plusieurs jours que je galère sur un programme.
Le but est de lire les mails dans la boite de réception, télécharger les pièces jointes sur un serveur et ensuite déplacer les mails, dans des sous-répertoires, une fois le traitement effectué.

Entre 5 à 6 fois par jour, je suis obligé de couper mon programme par le gestionnaire des taches, car celui-ci plante complètement quand j'arrive sur la lecture des pièces jointes.
J'ai modifié plusieurs fois mon code, mais je n'arrive pas à m'en sortir.

Pas de problème avec EmailRécupèreTout
tabListeEmail_A_Lire = EmailRécupèreTout(gstMonEmail_Session.Session_Email)

Par contre, dès que j'arrive sur la lecture de la structure de la variable emailattache, ou de la propriété, ca plante de manière aléatoire.
TableauOccurrence(tabListeEmail_A_Lire[i].Attache)
// OU
POUR TOUT MonEmail_PJ de MonEmail_A_Lire.Attache


J'ai essayé de mettre des traces et, quand cela plante, cela va être sur l'une des propriétés de Attache, peut importe laquelle.
Trace(tabEmail_A_Lire_Liste[i].MessageID)
Trace(tabEmail_A_Lire_Liste[i].Attache[1].Nom)
Trace(tabEmail_A_Lire_Liste[i].Attache[1].ContentType)
Trace(tabEmail_A_Lire_Liste[i].Attache[1].ContentDescription)
Trace(tabEmail_A_Lire_Liste[i].Attache[1].Contenu)
Trace(tabEmail_A_Lire_Liste[i].Attache[1].Identifiant)


J'ai également essayé de mettre des blocs QUAND EXCEPTION DANS, mais cela ne résout pas le problème.
Dans le code ci-dessous, j'ai essayé d'alimenter manuellement le tableau d'une variable email, mais toujours même résultat, plantage aléatoire de l'application...
MonEmail_A_Lire est un Email
tabListeEmail_A_Lire est un tableau de Emails

QUAND EXCEPTIONEXCEPTION DANS
nNB_Email = TableauOccurrence(tabListeEmail_A_Lire)
SI nNB_Email > 0 ALORS POUR i = 1 _À_ nNB_Email
SI tabListeEmail_A_Lire[i].MessageID = REQ_Emails_A_Traiter.Email_Message_ID ALORS
TableauSupprimeTout(MonEmail_A_Lire.Attache)
VariableRAZ(MonEmail_A_Lire)

MonEmail_A_Lire.MessageID = tabListeEmail_A_Lire[i].MessageID
nNB_PJ = TableauOccurrence(tabListeEmail_A_Lire[i].Attache)
SI nNB_PJ > 0 ALORS
POUR j = 1 _À_ nNB_PJ
MonEmail_A_Lire.Attache[j] = tabListeEmail_A_Lire[i].Attache[j]
FIN
FIN
bMonEmail = Vrai; SORTIR
FIN
FIN
FIN
FAIRE
pg_Logs_Ajoute(REQ_Moteur_Flux.IDApplication_Source,REQ_Moteur_Flux.IDFlux,0,9,"ERREUR "+ErreurInfo(errComplet))
GOTO FIN_DECONNEXION
FIN


Dans la majorité des cas, j'ai juste besoin de redémarrer mon appli pour que cela fonctionne, par contre, de temps en temps, j'ai des mails qui vont planter systématiquement et je suis obligé de les renvoyer sur la boite mail.
j'ai également aussi essayé de compiler mon application en 32 bits, mais même résultat.

Auriez-vous une ou plusieurs pistes pour m'aider à débloquer la situation ?

Cordialement,
Jérôme.
Publicado el 12,octubre 2022 - 15:41
Up.

Je suis toujours bloqué.
Mon appli plante toujours de manière aléatoire.
J'ai tenté de récupérer un dump avec WDDebug64.exe, mais lui aussi plante et ne génère donc pas le fichier salvateur...



Miembro registrado
47 mensajes
Publicado el 13,octubre 2022 - 09:14
J'ai eu ce bug qui a été visiblement corrigé en v27 (mais elle, en a introduit bien d'autres...)
Je pense que le code interne de cette fonction utilise l’asynchrone pour télécharger les pièces jointes.. et que la fonction retourne le tableau avant la fin des téléchargements.

Sur la 26 j'avais contourné (bien moins de plantage) en faisant un premier passage juste pour récupérer l’entête ( EmailRécupèreTout(ertEntête)) et avec un petit délai.

Mais j'ai fini par réutiliser les anciennes fonctions EmailLitPremier() bien plus stable !

Exemple de la doc
EmailLitPremier(NomUser)
TANTQUE Email.EnDehors = Faux

EmailLitSuivant(NomUser)
FIN


--
Développeur sur https://www.emjysoft.com/