PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE


  • Protocoles POP3 et SMTP
  • SMTP authentifié
  • Connexion avec double authentification
  • Délai de timeout
  • Création d'un profil Outlook Exchange
  • 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.
Remarques :
  • 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.
  • Etats et Requêtes variable de type emailSessionNotes : pour ouvrir une session vers un serveur Lotus Domino afin de manipuler les messages.
  • Etats et Requêtes 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.
Etats et Requêtes

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).
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).
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 = optionSSL
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.
Etats et RequêtesWindows

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.

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 : wd280com.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