DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Communication / Gestion des emails
  • Principe
  • Les différentes étapes
  • Ecrire un email avec une variable de type Email
  • Ecrire un email avec la structure Email
  • Exemples
  • Exemple utilisant la fonction EmailImporteHTML
  • Exemple utilisant la structure Email
  • Utilisation du format EML pour personnaliser des emails
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
Principe
Il existe deux méthodes pour gérer les emails en WLangage :
  • la structure Email qui permet de manipuler globalement un message de façon simple.
    Dans ce cas, pour écrire un email, il est nécessaire d'utiliser les différentes variables de la structure Email.
  • le type avancé Email qui offre des fonctionnalités évoluées (data binding, sérialisation, instances multiples, etc.).
    Dans ce cas, pour écrire un email, il est nécessaire de déclarer et initialiser une variable de type Email. Les pièces jointes éventuelles seront déclarées dans des variables de type emailAttache, puis ajoutées à la propriété Attache de la variable Email.
Lors de l'envoi du message (utilisation de la fonction EmailEnvoieMessage), les données présentes dans la variable ou structure email constitueront le message envoyé.
Les différentes étapes

Ecrire un email avec une variable de type Email

Pour écrire un email avec une variable de type Email :
  1. Déclarez et initialisez une variable de type Email en précisant par exemple les destinataires, le sujet, à l'aide des propriétés Destinataire, Cc, Cci et Sujet.
    Pour gérer un suivi de conversation, renseignez également la propriété MessageID.
  2. Si l'email est au format texte :
    • Initialisez la propriété Message avec le texte de l'email.
    • Précisez les fichiers attachés si nécessaire en déclarant des variables de type emailAttache et en les ajoutant à la propriété Attache de la variable représentant l'email.
  3. Si l'email est au format HTML : Utilisez la fonction EmailImporteHTML pour initialiser les différentes propriétés de l'email. Si l'email contient des images ou des fichiers multimédia, ils seront automatiquement ajoutés en pièces jointes à l'email et le contenu de l'email HTML sera modifié pour gérer les pièces jointes.
  4. Spécifiez si nécessaire des entêtes supplémentaires grâce à la propriété Entête.
  5. Envoyez l'email avec la fonction EmailEnvoieMessage. Si le sujet (ou un des éléments de l'email) contient des caractères spéciaux, des accents, utilisez la constante emailOptionEncodeEntête lors de l'envoi du message avec la fonction EmailEnvoieMessage. Le mail est alors envoyé au serveur. Le serveur conserve le mail jusqu'à la fermeture de la session. Lors de cette fermeture, le mail part effectivement vers le ou les destinataires.

Ecrire un email avec la structure Email

Pour écrire un email avec la structure Email :
  1. Initialisez la structure Email en précisant par exemple les destinataires, le sujet, à l'aide des variables Email.Destinataire, Email.NbDestinataire, Email.NbCc, Email.Cc et Email.Sujet.
    Pour gérer un suivi de conversation, renseignez également Email.MessageID.
  2. Si l'email est au format HTML :
    • 1er cas : la fonction EmailImporteHTML est disponible :
      • Utilisez la fonction EmailImporteHTML pour initialiser les différentes variables de la structure Email.
    • 2nd cas : la fonction EmailImporteHTML n'est pas disponible :
      • Initialisez les variables Email.Message et Email.HTML.
        Remarque : Il est conseillé de mettre un message au format texte pour les systèmes de messagerie ne permettant pas de lire des emails au format HTML.
      • Analysez le message HTML pour détecter tous les fichiers multimédia présents dans le message.
      • Pour chaque fichier multimédia trouvé :
        • Créez un fichier attaché. Ce fichier attaché correspond au fichier multimédia (variables Email.Attache et Email.NbAttache).
        • Créez un identifiant (Email.IdentifiantAttache). Cet identifiant doit être de la forme "wdcid"+numéro du fichier attaché. Par exemple, WDCID5 si le fichier correspondant est le cinquième fichier attaché.
        • Recherchez le fichier multimédia dans le message HTML et remplacez son nom par la chaîne : "cid:"+Email.IdentifiantAttache.
          Par exemple :
          Code HTML original : <IMG src="C:\MesImages\Image.gif">
          Code HTML remplacé : <IMG src="cid:WDCID5">
  3. Envoyez l'email avec la fonction EmailEnvoieMessage.
    Remarque : Si le sujet (ou un des éléments de l'email) contient des caractères spéciaux ou des accents, utilisez la constante emailOptionEncodeEntête lors de l'envoi du message avec la fonction EmailEnvoieMessage.
Exemples
WEBDEV - Code ServeurWindowsLinux

Exemple utilisant la fonction EmailImporteHTML

Cet exemple permet d'envoyer un email contenant des images :
// Ouverture d'une session SMTP
MaSession est une emailSessionSMTP
MaSession.AdresseServeur = "smtp.monentreprise.com"
EmailOuvreSession(MaSession)
 
// Construction du message
MonMessage est un Email
MonTexteHTML = fChargeTexte("C:\Email\MonCourrier.htm")
 
EmailImporteHTML(MonMessage, MonTexteHTML, "C:\Email")
 
MonMessage.Destinataire = "bob@masociete.net"
MonMessage.Sujet = "Test"
 
// Envoi du message
EmailEnvoieMessage(MaSession, MonMessage, emailOptionEncodeEntête)

Exemple utilisant la structure Email

Cet exemple permet de remplacer les références aux fichiers multimédia (images, sons, ...) présents dans la variable Email.HTML par leurs identifiants de type "CID". Cette procédure est appelée pour chaque fichier trouvé.
PROCÉDURE SetFichierAttache(NomFichier, Indice)
Email.Attache[Indice] = NomFichier
Email.NbAttache ++
 
// Remplacer dans Email.HTML toutes les références aux fichiers attachés
// par l'identifiant cid
CID est une chaîne = "cid:wdcid" + Indice
 
// Le fichier html n'a pas forcément été créé dans le répertoire en cours
// Il peut référencer les fichiers attachés dans des chemins quelconques
// On extrait donc le nom du fichier sans chemin
 
NomSimple est une chaîne = fExtraitChemin(NomFichier, fFichier + fExtension)
 
// Rechercher le nom du fichier dans Email.HTML
Pos est un entier = 0
PosDébut, PosFin sont des entiers
SousChaîne est une chaîne
Pos = Position(Email.HTML, NomSimple, Pos)
SI Pos <> 0 ALORS
PosFin = Pos + Taille(NomSimple)
// Rechercher la position du début de la référence
// Rechercher le délimiteur "
Pos --
SousChaîne = Email.HTML[[Pos]]
TANTQUE Pos > 1 ET SousChaîne <> """"
   Pos --
   SousChaîne = Email.HTML[[Pos]]
FIN
PosDébut = Pos + 1
// Remplacer
SousChaîne = Milieu(Email.HTML, PosDébut, PosFin - PosDébut)
Email.HTML = Remplace(Email.HTML, SousChaîne, CID)
FIN
Utilisation du format EML pour personnaliser des emails
WEBDEV - Code ServeurWindows Dans certains cas particuliers, la structure des emails envoyés peut ne pas correspondre aux informations voulues.
Quelques exemples :
  • La communication avec certains organismes (emails pour SESAM-VITALE) peut imposer des structures bien spécifiques.
  • Il est également possible de vouloir forcer un alphabet spécifique (pour une langue non latine).
  • Il est possible de vouloir indiquer une adresse de retour d'erreur différente de l'adresse d'expéditeur.
Pour personnaliser ces emails, le WLangage permet de générer le buffer de l'email, de le modifier puis d'envoyer cet email.
Les fonctions utilisées sont les suivantes :
  • EmailImporteSource : Cette fonction permet de lire un fichier EML existant et de remplir automatiquement les variables de la structure Email.
  • EmailConstruitSource : Cette fonction permet de générer le code source d'un email. Cette fonction permet de réaliser la définition complète du source de l'email en utilisant la souplesse de la structure Email.
  • EmailEnvoie : Cette fonction envoie un "buffer" au format EML contenant l'email structuré (créé par exemple avec la fonction EmailConstruitSource).
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.
WD Mailing par emails Exemples didactiques (WINDEV) : WD Mailing par emails
[ + ] Cet exemple illustre la possibilité d'envoyer un mailing par eMails avec WINDEV.

Cet exemple permet de saisir l'objet du message, son contenu et ses pièces jointes.
L'utilisateur doit ensuite sélectionner les clients auxquels le message doit être envoyé.
La fonction WLangage EMailEnvoieMessage() permet ensuite d'envoyer tout simplement le message saisi à chacun des clients sélectionnés.
Mise en Å“uvre technique :
Un serveur de mail compatible POP3/SMTP doit obligatoirement être accessible depuis le poste sur lequel s'exécute l'application.
Envoi d'un email au format HTML Exemples unitaires (WINDEV) : Envoi d'un email au format HTML
[ + ] Utilisation de la fonction WLangage "EmailImporteHTML".
Cette fonction permet d'importer un fichier HTML directement dans la structure email. Cela permet notamment d'ajouter des images simplement dans des emails.
WW_CMS Exemples complets (WEBDEV) : WW_CMS
[ + ] Cet exemple est un exemple de CMS (Content Management System).
C'est un site de gestion de contenu, typiquement un site d'affichage d'articles.

Cet exemple est découpé en 2 parties :
- Une partie AWP pour la partie qui doit être référencée
- Une partie WEBDEV Classique pour la partie administration

Note :
Pour que certaines fonctionnalités de l'exemple fonctionnent (l'envoi d'emails par exemple) il est nécessaire de modifier les paramètres afin de les adapter à votre configuration.
Ces paramètres sont stockés sous forme de constantes définies dans le code du projet.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 19/04/2023

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