PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → envoir Email en SMTP - supprimer destinataire
envoir Email en SMTP - supprimer destinataire
Débuté par JVE, 14 avr. 2021 18:15 - 3 réponses
Membre enregistré
48 messages
Posté le 14 avril 2021 - 18:15
Bonjour
A la suite d'une requête SQL, je souhaite envoyé un e-mail à chaque enregistrement (correspondant à un employé avec des données RH à transmettre). L'envoi des e-mail fonctionne parfaitement mais je n'arrive pas à supprimer le destinataire (son adresse email) après chaque enregistrement de la requête (utilisation de "Ajoute(MonMessage..Destinataire,EmailEmployé)"). En fait, je "cumule" les destinataires sans les supprimer ou les remplacer. Je n'ai pas trouvé la fonction ou ligne de code permettant ceci. Avez vous une idée de mon erreur ou de la fonction pour supprimer les destinataires? J'ai essayé avec "MonMessage..Destinataire=EmailEmployé" ou "MonMessage..Destinataire="" sans succès.
Merci pour votre aide.
Voici le code :
// Connexion au server SMTP
gSessionSMTP..AdresseServeur="smtp.gmail.com"
gSessionSMTP..Nom="xx"
gSessionSMTP..MotDePasse="xx"
gSessionSMTP..Port=587
gSessionSMTP..Option=emailOptionSécuriséTLS

SI PAS EmailOuvreSession(gSessionSMTP) ALORS
Erreur("Impossible de se connecter au serveur SMTP!", ErreurInfo())
RETOUR
FIN

// Exécution requête - lecture données - envoie emails
SI HExécuteRequêteSQL(ResDonneeEmploye,hRequêteDéfaut,ChaîneConstruit(DonneeEmploye,DateDeb,DateFin)) ALORS

HLitPremier(ResDonneeEmploye)
TANTQUE HTrouve(ResDonneeEmploye)

SI SansEspace(ResDonneeEmploye.EMAIL)<>"" ALORS
EmailEmployé=SansEspace(ResDonneeEmploye.EMAIL)
NbJourForfait=Val(ResDonneeEmploye.FORFAIT)
NbJourTr=Val(ResDonneeEmploye.NBJTR)
NbJourCongé=Val(ResDonneeEmploye.NBJRCONG)
Message ="Bonjour "
MonMessage..Expediteur="xx"
MonMessage..AdresseExpéditeur="xx"
MonMessage..Sujet = "xx"
Ajoute(MonMessage..Destinataire,EmailEmployé)
//MonMessage..Destinataire=EmailEmployé // bug - ligne de code non fonctionnelle
MonMessage..Message=Message
SI EmailEnvoieMessage(gSessionSMTP, MonMessage)=Faux ALORS
Erreur("Message non envoyé!", ErreurInfo())
SINON
NbEmailEnvoyé++
EmailRAZ()

FIN


FIN

HLitSuivant(ResDonneeEmploye)

FIN

SINON
Erreur(ErreurInfo())
FIN
HLibèreRequête(DonneeEmploye)

EmailFermeSession(gSessionSMTP)
Posté le 14 avril 2021 - 18:34
Bonjour,
la variable MonMessage..Destinataire est un tableau de chaines, il faut le vider comme tu viderais un tableau
TableauSupprimeTout ou VariableRAZ devraient faire l'affaire.

Cordialement
Membre enregistré
3 846 messages
Popularité : +227 (347 votes)
Posté le 14 avril 2021 - 19:58
Bonjour,
Destinataire est un tableau de chaines cf https://doc.pcsoft.fr/?3032029&name=structure_email, il suffit de le traiter comme tel via TableauCherche et TableauSupprime

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
30 messages
Popularité : +3 (3 votes)
Posté le 15 avril 2021 - 09:24
Bonjour

Dans ton exemple de code, EmailRAZ() ne réiitialise pas ta variable Email MonMessage mais la structure Email.
Pour réinitialiser la variable de type Email MonMessage, il faut écrire EmailRAZ(MonMessage)

Bon développement

Thierry Chateau-Darnis