DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Gestion des emails
  • Récupération des messages
  • Récupération asynchrone des messages (IMAP)
  • Consommation mémoire
  • Gestion de la jauge
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Récupère tous les emails présents sur un serveur d'emails.
Exemple
// Récupération de tous les emails non lus de la boîte de réception.
SessionIMAP est une emailSessionIMAP
tabEmailNonLus est un tableau de Emails
 
// Ouverture de la session
EmailOuvreSession(SessionIMAP)
 
// Récupération de tous les emails non lus
tabEmailNonLus = EmailRécupèreTout(SessionIMAP, ertNonLus)
 
// Affichage des informations de chaque email
POUR TOUT MonEmail DE tabEmailNonLus
ZoneRépétéeAjouteLigne(ZR_EMAIL, MonEmail.Expediteur, MonEmail.Message, MonEmail.Sujet)
FIN
Syntaxe
<Résultat> = EmailRécupèreTout(<Connexion> [, <Options de lecture>])
<Résultat> : Tableau de variables de type Email
Emails dans la boîte de réception (les éléments effectivement récupérés varient selon les paramètres).
<Connexion> : Chaîne de caractères ou variable de type emailSessionXX
Connexion au serveur de messagerie.
Ce paramètre peut être :
<Options de lecture> : Constante optionnelle de type Entier
Les valeurs possibles sont :
ertAsynchroneLes messages sont récupérés de façon asynchrone. La fonction retourne immédiatement un tableau de variables de type Email contenant autant d'éléments que nécessaire. La récupération effective des données se fait "à la demande" lors de l'accès aux éléments du tableau.
Remarques :
  • Dans ce mode, les jauges et les callbacks définies par la fonction EmailJauge ne sont pas prises en compte.
  • Les emails les plus anciens sont traités en premier.
ertCompletLes messages sont lus entièrement depuis le serveur (entête, corps du message et pièces jointes).
ertEntête
(valeur par défaut)
Seuls les entêtes sont lus. La récupération effective des autres données (corps du message et pièces jointes) se fait "à la demande" lors de l'accès aux éléments du tableau.
ertNonLusSeuls les messages marqués comme "non lus" sur le serveur sont récupérés.
Remarque : Cette valeur n'est pas disponible pour une connexion POP3.
Remarques

Récupération des messages

Pour récupérer la totalité des messages ainsi que leurs pièces jointes, il est préférable d'employer la constante ertComplet pour minimiser le nombre d'appels au serveur.
Au contraire, si le but n'est de récupérer complètement que quelques emails, il vaut mieux employer la constante ertEntete (la valeur par défaut) et laisser la récupération automatique du corps du message se faire lorsqu'elle est nécessaire uniquement (c'est-à-dire au moment de l'accès à la propriété Message de la variable Email).
Remarques :
  • Si une propriété d'un email récupéré est modifiée avant que le corps du message ou les pièces jointes ne soient récupérés, cela annule la récupération du corps du message et des pièces jointes.
  • Récupération d'emails Outlook : La propriété ContentType n'est pas disponible et la propriété ContentID est renseignée de manière optionnelle.

Récupération asynchrone des messages (IMAP)

La récupération asynchrone des emails avec la constante ertAsynchrone est réalisée dans un thread secondaire afin de ne pas être bloquante. Le tableau renvoyé par la fonction EmailRécupèreTout doit donc être intégralement parcouru avant tout appel d'une autre fonction EmailXXX nécessitant un échange avec le serveur IMAP.
Attention : l'accès à une information non récupérée peut entrainer une erreur lors de l'accès au tableau.
Par exemple, il ne faut pas écrire le code suivant :
tabEmailNonLus = EmailRécupèreTout(SessionIMAP, ertAsynchrone)
POUR TOUT mail DE tabEmailNonLus
SI mail.Sujet [~] "alerte" ALORS
EmailChangeEtat(SessionIMAP, mail, emailEtatNonLu)
FIN
FIN

En effet, il faut gérer le changement d'état après le parcours de tous les emails.
Par exemple :
nIndice est un entier
tabIndiceEmailChangeEtat est un tableau d'entier
 
tabEmailNonLus = EmailRécupèreTout(SessionIMAP, ertAsynchrone)
POUR TOUT mail DE tabEmailNonLus
nIndice++
SI mail.Sujet [~] "alerte" ALORS
Ajoute(tabIndiceEmailChangeEtat, nIndice)
FIN
FIN
 
POUR TOUT n DE tabIndiceEmailChangeEtat
EmailChangeEtat(SessionIMAP, tabEmailNonLus[n], emailEtatNonLu)
FIN

Consommation mémoire

La récupération des emails est faite en mémoire. Si la boite de réception contient de nombreux messages ou des pièces jointes de taille importante, la lecture peut consommer une grande quantité de mémoire.
WINDEVUniversal Windows 10 AppAndroidWidget AndroidiPhone/iPad

Gestion de la jauge

Pour connaître l'état d'avancement de la récupération, il est nécessaire de fixer une jauge ou une procédure à l'aide de la fonction EmailJauge.
Deux syntaxes de procédure sont supportées :
  • Procédure recevant deux paramètres : la taille totale et l'état de progression en cours.
  • Procédure recevant quatre paramètres : la taille totale, l'état de progression en cours, l'indice du message en cours de traitement et le nombre total de messages.
Liste des exemples associés :
WD Mail Exemples complets (WINDEV) : WD Mail
[ + ] Cette application est un client mail complet développé en WINDEV. Il s'appuie sur les objets Email.
Ce client mail permet de récupérer et d'envoyer des emails en utilisant les protocoles POP, IMAP et SMTP.
Il est possible d'appliquer des filtres sur le courrier entrant.
L'écriture d'un email s'appuie sur le champ Editeur HTML.
L'affichage des emails utilise le champ Affichage HTML.
L'application permet de gérer plusieurs comptes emails différents.
Composante : wd300com.dll
Version minimum requise
  • Version 15
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 21/06/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale