DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Gestion des emails
  • Protocoles POP3 et SMTP
  • SMTP authentifié
  • Connexion avec double authentification
  • Délai de timeout
  • Création d'un profil Outlook Exchange
  • Gestion des emails en mode asynchrone
  • Fonctionnalité d'application requise
  • Gmail : Que faire si une connexion à Gmail (SMTP, IMAP, POP3) échoue avec une erreur de certificat ?
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
Ouvre une session de gestion des emails en fonction du mode de gestion choisi :
  • emails gérés par le protocole POP3, SMTP ou IMAP : la fonction EmailOuvreSession permet d'ouvrir la session POP3, SMTP ou IMAP.
  • WINDEVWEBDEV - Code Serveur emails gérés par l'intermédiaire du client MS Exchange : la fonction EmailOuvreSession permet d'ouvrir la session MS Exchange. Dans ce cas, lors de l'utilisation de la fonction EmailOuvreSession, le répertoire en cours est automatiquement modifié.
Java Seules les sessions POP3 et SMTP sont gérées.
Remarques :
  • WINDEVWEBDEV - Code Serveur Pour ouvrir une session avec le logiciel de messagerie Lotus Notes, utilisez la fonction EmailOuvreSessionNotes.
  • WINDEVWEBDEV - Code Serveur Pour ouvrir une session avec le logiciel de messagerie Outlook, utilisez la fonction EmailOuvreSessionOutlook.
  • Pour ouvrir une session de lecture des emails (protocole POP3 uniquement), utilisez la fonction EmailOuvreSessionPOP3.
  • Pour ouvrir une session d'envoi des emails (protocole SMTP uniquement), utilisez la fonction EmailOuvreSessionSMTP. Cette fonction permet également d'ouvrir une session SMTP authentifiée.
// Envoi d'un email par le protocole POP3
SI EmailOuvreSession(USER, PASSWORD, "pop3.gmail.com", "smtp.gmail.com") = Vrai ALORS
NomUser = USER
SINON
NomUser = ""
Erreur("Impossible d'établir la connexion")
FIN
Syntaxe

Ouvrir une session d'emails (POP3, SMTP, IMAP, Notes ou Outlook) Masquer les détails

<Résultat> = EmailOuvreSession(<Session>)
<Résultat> : Booléen
  • Vrai si la session a été ouverte,
  • Faux dans le cas contraire. En cas d'erreur, la variable ErreurDétectée est à Vrai.
    Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
<Session> : Variable de type emailSessionPOP3, emailSessionSMTP, emailSessionIMAP, emailSessionNotes ou emailSessionOutlook
Nom de la variable contenant la description des paramètres de connexion au serveur de messagerie. Toutes les propriétés de la connexion sont spécifiées dans les propriétés de la variable. Pour plus de détails, consultez :
  • variable de type emailSessionPOP3 : pour ouvrir une session vers un serveur POP3 afin de lire les messages.
  • variable de type emailSessionIMAP : pour ouvrir une session vers un serveur IMAP afin de lire les messages.
  • variable de type emailSessionSMTP : pour ouvrir une session vers un serveur SMTP afin d'envoyer des messages.
  • WINDEVWEBDEV - Code ServeurEtats et RequêtesCode Utilisateur (MCU)Ajax variable de type emailSessionNotes : pour ouvrir une session vers un serveur Lotus Domino afin de manipuler les messages.
  • WINDEVWEBDEV - Code ServeurEtats et RequêtesCode Utilisateur (MCU)Ajax variable de type emailSessionOutlook : pour ouvrir une session vers le logiciel de messagerie Outlook.
Remarque : Cette syntaxe est conservée pour compatibilité. Il est recommandé d'utiliser les variables de type emailSessionOutlook ou la fonction EmailOuvreSessionOutlook.
WINDEVWEBDEV - Code ServeurEtats et RequêtesCode Utilisateur (MCU)Ajax

Ouvrir une session d'emails utilisant MS Exchange Masquer les détails

<Résultat> = EmailOuvreSession(<Profil> [, <Asynchrone>])
<Résultat> : Entier
  • Identifiant de la session email en cours.
  • 0 (ou Faux) en cas d'erreur. La variable ErreurDétectée est à Vrai. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
<Profil> : Chaîne de caractères
Identifie le profil de la connexion (voir Notes).
Si ce paramètre correspond à une chaîne vide ("") :
  • si plusieurs profils sont définis sur le poste en cours, la fonction EmailOuvreSession affiche une fenêtre contenant tous les profils dans laquelle l'utilisateur peut choisir son profil.
  • si un seul profil est défini sur le poste en cours, la fonction EmailOuvreSession sélectionne automatiquement ce profil.
<Asynchrone> : Constante ou booléen optionnel
emailAsynchrone ou VraiLes emails envoyés lors de la session ouverte avec la fonction EmailOuvreSession doivent être transmis en mode asynchrone (voir les Notes).
emailSynchrone ou Faux
(Valeur par défaut)
Les emails envoyés lors de la session ouverte avec la fonction EmailOuvreSession doivent être transmis en mode synchrone (voir les Notes).
WINDEV Ce paramètre doit correspondre à emailSynchrone ou Faux.
Remarque : Cette syntaxe est conservée pour compatibilité. Il est recommandé d'utiliser les variables de type emailSessionPOP3, emailSessionSMTP ou les fonctions EmailOuvreSessionPOP3 et EmailOuvreSessionSMTP.

Ouvrir une session d'emails utilisant les protocoles POP3 et SMTP simultanément Masquer les détails

<Résultat> = EmailOuvreSession(<Nom utilisateur> , <Mot de passe> , <Adresse serveur POP3> [, <Adresse serveur SMTP> [, <Numéro port POP3> [, <Numéro port SMTP> [, <Asynchrone>]]]])
<Résultat> : Booléen
  • Vrai si la session a été ouverte,
  • Faux dans le cas contraire. En cas d'erreur, la variable ErreurDétectée est à Vrai. Pour connaître le libellé de l'erreur, utilisez la fonction ErreurInfo avec la constante errMessage.
<Nom utilisateur> : Chaîne de caractères
Identifie l'utilisateur. Ce nom est fourni par le fournisseur de services ou par l'administrateur réseau. Ce nom permettra d'identifier la session d'emails dans les différentes fonctions de gestion des emails.
<Mot de passe> : Chaîne de caractères
Mot de passe de l'utilisateur. Ce mot de passe est fourni par le fournisseur de services ou par l'administrateur réseau.
<Adresse serveur POP3> : Chaîne de caractères
Adresse IP du serveur d'emails (protocole entrant). Cette adresse IP est fournie par le fournisseur de services ou par l'administrateur réseau. Cette adresse IP peut être donnée sous la forme :
  • Adresse IP au format XXX.XXX.XXX.XXX ( par exemple, 125.5.110.100).
  • Adresse IP contenant le nom du serveur (par exemple, pop3.freesbee.fr). Cette syntaxe est conseillée.
  • Adresse IP obtenue par la fonction NetAdresseIP.
<Adresse serveur SMTP> : Chaîne de caractères optionnelle
Adresse IP du serveur d'emails (protocole sortant). Cette adresse IP est fournie par le fournisseur de services ou par l'administrateur réseau.
Cette adresse doit être précisée uniquement si le compte POP3 et le compte SMTP ne passent pas par le même poste.
<Numéro port POP3> : Entier optionnel
Identifie le port utilisé pour le protocole POP3 (110 par défaut).
<Numéro port SMTP> : Entier optionnel
Identifie le port utilisé pour le protocole SMTP (25 par défaut).
<Asynchrone> : Constante ou booléen optionnel
emailAsynchrone ou VraiLes emails envoyés lors de la session ouverte avec la fonction EmailOuvreSession doivent être transmis en mode asynchrone (voir les Notes).
emailSynchrone ou Faux
(Valeur par défaut)
Les emails envoyés lors de la session ouverte avec la fonction EmailOuvreSession doivent être transmis en mode synchrone (voir les Notes).
WINDEV Ce paramètre doit correspondre à emailSynchrone ou Faux.
Remarques

Protocoles POP3 et SMTP

Les différents paramètres passés à la fonction EmailOuvreSession sont fournis par le fournisseur de services ou par l'administrateur réseau.
Avant de pouvoir gérer les emails, il est nécessaire d'ouvrir une connexion Internet. Plusieurs cas peuvent se présenter :
  • L'utilisateur utilise une connexion à Internet directe (cable ou ADSL) : aucune opération spécifique ne doit être faite.
  • L'utilisateur utilise un modem pour se connecter à Internet : la fonction NetOuvreAccèsDistant permet d'ouvrir la connexion à Internet.
Par défaut, si seule l'adresse IP du serveur POP3 est précisée, cette adresse sera utilisée par le serveur d'emails utilisant le protocole SMTP. Il est nécessaire de préciser l'adresse IP du protocole SMTP uniquement si le compte POP3 et le compte SMTP ne passent pas par le même poste.

SMTP authentifié

L'authentification SMTP ne peut pas être effectuée avec la fonction EmailOuvreSession. Pour ouvrir à la fois une session POP3 et une session SMTP authentifiée il est nécessaire d'utiliser les deux fonctions EmailOuvreSessionPOP3 et EmailOuvreSessionSMTP.

Connexion avec double authentification

De plus en plus de fournisseurs proposent l'utilisation de comptes email sécurisés (SMTP/IMAP) avec une double authentification.
Le principe est le suivant :
  • Connexion de type OAuth vers le fournisseur de la boîte mail : cette connexion fournit un token.
  • Utilisation du token qui devra être utilisé lors de la connexion aux boîtes IMAP ou SMTP.
Voici un exemple de code pouvant être utilisé :
// Exemple de connexion IMAP avec un compte Gmail
// et une double authentification
OAuthCnxGoogle est un OAuth2Paramètres
gMaSessionIMAP est un emailSessionIMAP
 
// Paramètres du serveur IMAP
gMaSessionIMAP.AdresseServeur = "imap.gmail.com"
gMaSessionIMAP.Option = optionTLS
gMaSessionIMAP.Port = "993"
 
// Paramètres de connexion OAuth
OAuthCnxGoogle.ClientID = "ID de l'application"
OAuthCnxGoogle.ClientSecret = "ID secret de l’application"
OAuthCnxGoogle.URLAuth = "https://accounts.google.com/o/oauth2/auth"
OAuthCnxGoogle.URLToken = "https://accounts.google.com/o/oauth2/token"
OAuthCnxGoogle.Scope = "https://mail.google.com/"
OAuthCnxGoogle.URLRedirection = "http://localhost:9000"
OAuthCnxGoogle.TypeRéponse = "code"
 
// Identification OAuth
gMaSessionIMAP.AuthToken = AuthIdentifie(OAuthCnxGoogle)
// Si l'identification a réussi, il faut se connecter à la boîte email.
SI gMaSessionIMAP.AuthToken <> Null ALORS
SI EmailOuvreSession(gMaSessionIMAP) ALORS
// Session ouverte
SINON
// Erreur d'ouverture de la session.
FIN
SINON
// Erreur d'authentification.
FIN

Délai de timeout

Il est possible de paramétrer le délai de timeout avec la fonction EmailChangeTimeOut.
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindowsCode Utilisateur (MCU)Ajax

Création d'un profil Outlook Exchange

Pour ouvrir une nouvelle session d'emails, il est nécessaire de définir un "profil". Ce "profil" est défini dans la configuration de la connexion Internet.
Pour créer un profil :
  1. Ouvrez le panneau de configuration.
  2. Double-cliquez sur l'option "Courrier".
  3. Cliquez sur le bouton "Afficher les profils".
  4. Dans la fenêtre "Choix d'un profil", cliquez sur le bouton "Ajouter".
  5. Donnez un nom au profil. Ce nom sera utilisé dans les programmes WINDEV.
  6. Sélectionnez l'option "Ajouter un nouveau compte de messagerie".
  7. Sélectionnez le service "Microsoft Exchange Server".
  8. Donnez le nom du serveur Microsoft Exchange.
WEBDEV - Code ServeurAjax

Gestion des emails en mode asynchrone

Par défaut, les fonctions Email sont bloquantes. Cela signifie que pendant leur exécution, aucun autre code ne peut être exécuté. Le programme continuera de s'exécuter uniquement lorsque l'exécution des fonctions Email sera terminée.
WEBDEV offre la possibilité de gérer les emails en mode asynchrone. Ce mode permet à vos sites d'envoyer des emails sans bloquer l'exécution des différents traitements.
Pour utiliser le mode asynchrone , il faut :
  1. Décocher l'option "Désactiver le spooler de mail" dans l'administrateur WEBDEV (onglet "Configuration").
  2. Activer le mode asynchrone à l'ouverture de la session SMTP (avec la fonction EmailOuvreSessionSMTP ou la fonction EmailOuvreSession).
  3. Tous les emails à envoyer seront transmis à un "spooleur". Les emails sont ainsi mis en file d'attente avant d'être envoyés.
L'exécution des fonctions Email n'est alors plus bloquante pour le reste du programme. La fonction EmailEtat permet de connaître l'état d'un email.
Remarque : si l'administrateur WEBDEV est fermé, le spooler d'emails est vidé : les emails en attente ne sont pas envoyés et sont enlevés du spooler.
Si vous cochez l'option "Désactiver le spooler de mail" alors que des emails sont en attente, ces emails ne seront pas perdus : l'administrateur continue de les envoyer, mais aucun nouveau mail ne sera accepté par le spooler.
Attention : Le mode asynchrone est utilisable uniquement lors de l'ouverture d'une session sur un serveur SMTP (fonction EmailOuvreSessionSMTP pour l'envoi d'emails ou fonction EmailOuvreSession). Le mode asynchrone est ignoré dans tous les autres cas.
Universal Windows 10 App

Fonctionnalité d'application requise

L'utilisation de cette fonction entraîne la déclaration d'une fonctionnalité d'application dans l'assistant de génération de l'application.
Fonctionnalité requise : Réseaux domestiques et professionnels
Cette fonctionnalité permet aux applications d'utiliser des accès entrants et sortants vers des réseaux domestiques et professionnels.

Gmail : Que faire si une connexion à Gmail (SMTP, IMAP, POP3) échoue avec une erreur de certificat ?

Depuis fin août 2017, Google a déployé un nouveau certificat : Google Internet Authority G3. Malheureusement, l'API Windows utilisée pour la vérification des certificats ne valide pas ce certificat.
L'ouverture d'une session POP3, IMAP ou SMTP peut donc échouer avec le retour "La chaîne de certificats a été fournie par une autorité qui n'est pas approuvée".
Afin de permettre la validation du certificat, il est possible de modifier le mode de gestion des emails. La fonction WLangage EmailParamètre permet de changer ce mode et ainsi de ne plus utiliser l'API Windows qui bloque ce certificat. Voici le code à ajouter avant l'ouverture de la session par la fonction EmailOuvreSession :
// Activation de l'implémentation multiplateforme
EmailParamètre(emailParamètreMode, 1)
Remarque : À partir de la version 23 Update 1, l'appel à la fonction EmailParamètre n'est plus nécessaire : le WLangage utilise automatiquement le mode de gestion des emails adapté à la session.
Composante : wd290com.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Problème avec outlook
emailouvresession() ouvre la fenêtre "message" d'Outlook
problème : après envoi (ou abandon), Outlook reste en mémoire et on ne peut faire un 2nd envoi
Le problème ne vient pas de Windev car le phénomène est reproduisible à partir de l'option "envoyer vers" du menu contextuel du l'explorateur.
Comme solution, lancer préalablement outlook :
LanceAppli(RegistreLit("HKEY_LOCAL_MACHINE\SOFTWARE\Clients\Mail\Microsoft Outlook\shell\open\command",""))
Patinfo
04 oct. 2011

Dernière modification : 28/06/2023

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