PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → EmailCherchePremier  + GMail
EmailCherchePremier + GMail
Débuté par Kharles, 29 nov. 2015 18:20 - 13 réponses
Membre enregistré
44 messages
Posté le 29 novembre 2015 - 18:20
Bonjour à Toutes et à Tous.

Le code suivant me semble correct, mais je reste humble et le soumet à votre sagacité...
//...
bResultat=EmailCherchePremier(MaSession,emailCorps,sChaineRecherchée)

SI bResultat= Vrai ALORS
EmailLitMessage(MaSession,UnMail,nIDMessage)
TANTQUE UnMail.EnDehors = Faux
//...

Mais quand "bResultat" = Vrai, "UnMail" est "vide" et "nIDMessage"=0.
Et donc le TANTQUE est faux.
Je teste cela sous GMail en protocole IMAP.
Tous les paramètres de connexion sont bon, je suis donc connecté.

Bref, je tourne en rond, j'ai plus d'idée ou je vois pas la grosse bêtise que j'ai codé...

" Au secours, Obi-Wan Kenobi, vous êtes mon seul espoir"

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé l'amitié de Google et donné dans le rituel.
Posté le 30 novembre 2015 - 12:59
Bonjour

sot tu essaye de faire quelque chose de particulier, soit tu n'as pas
bien lu l'aide du emailCherchePremier. L'aide de celui ci indique qu'il
doit être suivi d'une boucle contenant le traitement de l'email LU par
le emailcherchepremier puis un emaillitsuivant.

Voila l'exemple de l'aide :

SI EmailCherchePremier(IDSession, emailSujet + emailCorps, ...
"PC Soft") = Vrai ALORS
// Enumération des emails trouvés
TANTQUE Email.EnDehors = Faux
// Affiche l'expéditeur et le sujet dans un champ Table
TableAjoute(TABLE_EmailTrouve, Email.Expéditeur + ...
TAB + Email.Sujet)
// Email trouvé suivant
EmailLitSuivant(IDSession)
FIN
SINON...

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


On 11/29/2015 12:20 PM, KHarles wrote:
Bonjour à Toutes et à Tous.

Le code suivant me semble correct, mais je reste humble et le soumet à
votre sagacité...
//...
bResultat=EmailCherchePremier(MaSession,emailCorps,sChaineRecherchée)

SI bResultat= Vrai ALORS
EmailLitMessage(MaSession,UnMail,nIDMessage)
TANTQUE UnMail.EnDehors = Faux //...

Mais quand "bResultat" = Vrai, "UnMail" est "vide" et "nIDMessage"=0.
Et donc le TANTQUE est faux.
Je teste cela sous GMail en protocole IMAP.
Tous les paramètres de connexion sont bon, je suis donc connecté.

Bref, je tourne en rond, j'ai plus d'idée ou je vois pas la grosse
bêtise que j'ai codé...

" Au secours, Obi-Wan Kenobi, vous êtes mon seul espoir"

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous
n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé
l'amitié de Google et donné dans le rituel.
Membre enregistré
44 messages
Posté le 30 novembre 2015 - 14:26
Bonjour,
Merci pour Votre réponse.
Effectivement, je ne voulais pas poster tout le code, donc il manquait des trucs...
Voici donc le code :

MaSession est un EmailSessionIMAP
UnMail est un Email
bResultat est un booléen
nIDMessage est un entier

// IMAP GOOGLE
MaSession..AdresseServeur = SAI_imap
MaSession..Nom = SAI_Session
MaSession..MotDePasse = SAI_pass
MaSession..Port=993
MaSession..Option=optionSSL

EmailOuvreSession(MaSession)
sRepMail ="Ailleurs"
sChaineRecherchée est une chaîne =SAI_Demande
bResultat=EmailCherchePremier(MaSession,emailCorps,sChaineRecherchée)

SI bResultat= Vrai ALORS
EmailLitMessage(MaSession,UnMail,nIDMessage)
TANTQUE UnMail.EnDehors = Faux
// Le Contient suivant est redondant...
SI Contient(UnMail.TexteBrut,sChaineRecherchée) ALORS
Trace(UnMail.DateRéception+RC+UnMail.Sujet)
POUR TOUTE CHAINE LaLigne DE UnMail.TexteBrut SEPAREE PAR RC
Trace(LaLigne)
FIN
bResultat = EmailChangeEtat(MaSession,UnMail,emailEtatLu)
bResultat = EmailCopie(MaSession,UnMail,sRepMail)
bResultat = EmailSupprimeMessage(MaSession,UnMail)

FIN
EmailRAZ(UnMail)
bResultat = EmailLitSuivant(MaSession,UnMail)
FIN
bResultat = EmailDétruit(MaSession)
SINON
Erreur()
FIN

FIN:
EmailFermeSession(MaSession)

Tout cela provient de bouts de code piochés deci-delà et notamment dans l'aide.
Mais quand "bResultat" = Vrai, "UnMail" est "vide" et "nIDMessage"=0.
Et donc le TANTQUE est faux.
Je teste cela sous GMail en protocole IMAP.
Tous les paramètres de connexion sont bon, je suis donc connecté.

Cordialement.

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé l'amitié de Google et donné dans le rituel.
Posté le 30 novembre 2015 - 15:19
Comme je le disais, le emaillitmessage est en TROP. EmailCherchePremier
a DEJA lu le message si bresulat est à vrai.

Cordialement



--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


On 11/30/2015 8:26 AM, KHarles wrote:
Bonjour,
Merci pour Votre réponse.
Effectivement, je ne voulais pas poster tout le code, donc il manquait
des trucs...
Voici donc le code :

MaSession est un EmailSessionIMAP
UnMail est un Email
bResultat est un booléen
nIDMessage est un entier

// IMAP GOOGLE
MaSession..AdresseServeur = SAI_imap
MaSession..Nom = SAI_Session
MaSession..MotDePasse = SAI_pass
MaSession..Port=993
MaSession..Option=optionSSL

EmailOuvreSession(MaSession)
sRepMail ="Ailleurs"
sChaineRecherchée est une chaîne =SAI_Demande
bResultat=EmailCherchePremier(MaSession,emailCorps,sChaineRecherchée)

SI bResultat= Vrai ALORS
EmailLitMessage(MaSession,UnMail,nIDMessage)
TANTQUE UnMail.EnDehors = Faux // Le Contient
suivant est redondant...
SI Contient(UnMail.TexteBrut,sChaineRecherchée) ALORS
Trace(UnMail.DateRéception+RC+UnMail.Sujet)
POUR TOUTE CHAÎNE LaLigne DE UnMail.TexteBrut SEPAREE
PAR RC Trace(LaLigne)
FIN
bResultat = EmailChangeEtat(MaSession,UnMail,emailEtatLu)
bResultat = EmailCopie(MaSession,UnMail,sRepMail)
bResultat = EmailSupprimeMessage(MaSession,UnMail)

FIN
EmailRAZ(UnMail)
bResultat = EmailLitSuivant(MaSession,UnMail)
FIN
bResultat = EmailDétruit(MaSession)
SINON
Erreur()
FIN

FIN:
EmailFermeSession(MaSession)

Tout cela provient de bouts de code piochés deci-delà et notamment dans
l'aide.
Mais quand "bResultat" = Vrai, "UnMail" est "vide" et "nIDMessage"=0.
Et donc le TANTQUE est faux.
Je teste cela sous GMail en protocole IMAP.
Tous les paramètres de connexion sont bon, je suis donc connecté.

Cordialement.

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous
n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé
l'amitié de Google et donné dans le rituel.
Membre enregistré
44 messages
Posté le 30 novembre 2015 - 16:30
C'est exactement cela !
Merci beaucoup.

Salutations.

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé l'amitié de Google et donné dans le rituel.
Posté le 01 décembre 2015 - 12:08
Comme quoi, l'avertissement en fin d'email est définitivement de trop.
La réponse était bien visible dans la doc :-)

Cordialement


--
Fabrice Harari
Consultant WinDev, WebDev et WinDev Mobile International

A votre disposition : WXShowroom.com, WXReplication (open source) et
maintenant WXEDM (open source)

Plus d'information sur http://fabriceharari.com


On 11/30/2015 10:30 AM, KHarles wrote:
C'est exactement cela !
Merci beaucoup.

Salutations.

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous
n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé
l'amitié de Google et donné dans le rituel.
Membre enregistré
44 messages
Posté le 01 décembre 2015 - 12:09
Ça marche plus et je comprends pas pourquoi...
Je deviens dingue...
EmailOuvreSession(MaSession)
bResultat=EmailCherchePremier(MaSession,emailCorps,sChaineRecherchée)
SI bResultat= Vrai ALORS
//TANTQUE Email.EnDehors = Faux
//FIN
FIN
Trace("EmailCherchePremier(MaSession,emailCorps,sChaineRecherchée "+bResultat+" "+"Email.EnDehors="+Email.EnDehors)
EmailFermeSession(MaSession)


La trace donne ceci : EmailCherchePremier(MaSession,emailCorps,sChaineRecherchée 1 Email.EnDehors=1

Comment le EmailCherchePremier peut renvoyer VRAI et qu'en même temps Email.EnDehors revoit VRAI ?

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé l'amitié de Google et donné dans le rituel.
Posté le 06 décembre 2015 - 12:24
Bjr,

KHarles a présenté l'énoncé suivant :
Bonjour à Toutes et à Tous.

Le code suivant me semble correct, mais je reste humble et le soumet à votre
sagacité...
//...
bResultat=EmailCherchePremier(MaSession,emailCorps,sChaineRecherchée)

SI bResultat= Vrai ALORS
EmailLitMessage(MaSession,UnMail,nIDMessage)
TANTQUE UnMail.EnDehors = Faux //...

Mais quand "bResultat" = Vrai, "UnMail" est "vide" et "nIDMessage"=0.
Et donc le TANTQUE est faux.
Je teste cela sous GMail en protocole IMAP.
Tous les paramètres de connexion sont bon, je suis donc connecté.

Bref, je tourne en rond, j'ai plus d'idée ou je vois pas la grosse bêtise que
j'ai codé...

" Au secours, Obi-Wan Kenobi, vous êtes mon seul espoir"


Windev gere l ' IMAP ??

a plus


--
-------------------------------------------------------------
www.ctc-soft.com
Gestion biblo-documentaire (free-share)
Comptabilité shareware
Logiciels de Gestion de saisie terrain
Spécialisé Tournées de boulangers
-------------------------------------------------------------
Membre enregistré
44 messages
Posté le 11 décembre 2015 - 10:32
Bonjour,

Désole pour la réponse tardive, et oui, effectivement Windev gère l'IMAP.

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé l'amitié de Google et donné dans le rituel.
Membre enregistré
163 messages
Popularité : +3 (3 votes)
Posté le 11 mars 2016 - 16:25
Bonjour KHarles, as-tu trouvé une solution pour ton problème.
J'ai moi-même un problème avec la fonction EmailLitMessage(). La fonction renvoi Vrai mais la variable email n'est pas initialisée.

Mon code :
SI EmailLitMessage(MaSessionIMAP,Mon_mail,ID) ALORS
gsAdresseExp = Mon_mail..AdresseExpéditeur
LIB_De = Mon_mail..Expediteur + "[" + gsAdresseExp + "]"
LIB_SUJET = Mon_mail..Sujet
LIB_DATE_HEURE = Mon_mail..DateRéception
SAI_MESSAGE = Mon_mail..Message
SINON
Erreur("Impossible de lire le message.",ErreurInfo(errMessage))
FIN


--
FredB
--
Le développement c'est la vie (des processus) et la vie c'est le développement (de soi)
--
Posté le 02 août 2016 - 09:31
Bonjour,

Avez-vous trouvé une solution pour initialiser "email" car je suis confronté à ce problème aujourd'hui ?
Merci pour vos réponses.

Jean-Marc SOUCHEZ
Membre enregistré
44 messages
Posté le 05 août 2016 - 10:24
Bonjour,

Désolé pour cette réponse tardive.
J'ai laissé tomber pour le moment.

--
Merci pour Vos réponses.
P.S. Merci de ne pas perdre Votre précieux temps à répondre si Vous n'avez pas éléments à apporter...
Je vous rassure, j'ai fait des tests, consulté l'aide de Windev, utilisé l'amitié de Google et donné dans le rituel.
Membre enregistré
14 messages
Popularité : +1 (1 vote)
Posté le 19 août 2016 - 14:20
Bonjour,

J'ai exactement le même problème ... La seule chose est que c'est aléatoire, des fois ça fonctionne et des fois pas. On a ce problème depuis un certain temps et toujours pas trouvé de solution. Dans notre cas, ce qui est bizarre c'est qu'on trouve le nombre de message (variable nNbMail) mais la structure Email n'est pas rempli et EnDehors retourne vrai. Voici le bout de code (évidemment, il y a la connexion avant)

EmailChangeDossier(GB_MailiDSession,LRepertoire)
nNbMail = EmailNbMessage(GB_MailNomUser)
EmailLitPremier(GB_MailNomUser)
TANTQUE PAS Email.EnDehors
nNbMailRead++
EmailLitSuivant(GB_MailNomUser)
FIN
EmailFermeSession(GB_MailNomUser)
SI nNbMail _ET_ nNbMailRead = 0 ALORS
Trace("Problème avec le mail => nNbMail[" + nNbMail + "]nNbMailRead[" + nNbMailRead + "]" + RC + RC + dbgInfo(dbgPile))
FIN
FIN

Avec ce code, j'ai de temps en temps la trace suivante :
Problème avec le mail => nNbMail[4]nNbMailRead[0]
qui veut dire qu'il y a bien 4 mails mais impossible d'accéder au premier mail ... Très bizarre

Bonne journée
Stéphane
Membre enregistré
14 messages
Popularité : +1 (1 vote)
Posté le 19 août 2016 - 14:23
Pardon oublié de mettre le code de manière visible ...

EmailChangeDossier(GB_MailiDSession,LRepertoire)
nNbMail = EmailNbMessage(GB_MailNomUser)
EmailLitPremier(GB_MailNomUser)
TANTQUE PAS Email.EnDehors
nNbMailRead++
//traitement du mail ....
EmailLitSuivant(GB_MailNomUser)
FIN
EmailFermeSession(GB_MailNomUser)
SI nNbMail _ET_ nNbMailRead = 0 ALORS
Trace("Problème avec le mail => nNbMail[" + nNbMail + "]nNbMailRead[" + nNbMailRead + "]" + RC + RC + dbgInfo(dbgPile))
FIN