Recherche sur le blog

mardi 25 août 2015

[WD20] Envoyer un e-mail

Pour envoyer un e-mail depuis votre application Windev, vous pouvez notamment utiliser la fonction LanceAppliAssociée() qui ouvrira la messagerie par défaut. Le paramètre à préciser est en fait une chaine qui contiendra l'URL "mailto". Celle-ci pourra contenir des champs pré-remplis (sujet, destinataire, fichier à attacher). Bien sûr, pour que cela fonctionne, il faut qu'un logiciel de messagerie soit associé à ce protocole. Pour information la fonction ne peut pas être utilisée dans une application Linux. 

Il y a une autre solution qui peut être mise en place dans Windev : l'utilisation des variables et fonctions Email. Grâce à ces éléments il va être possible d'envoyer un e-mail à travers le protocole IMAP ou SMTP, ou même en utilisant un profil Outlook.

Envoyer à l'aide d'une connexion SMTP

On déclare tout d'abord dans notre code une variable qui sera de type Email. On va appeler celle-ci "eMonMessage". Elle contient de nombreuses propriétés qui permettent de modifier les caractéristiques du message (sujet, contenu, destinataires, etc). L'avantage par rapport à la structure proposée par Windev, c'est qu'il n'est pas obligatoire d'indiquer explicitement le nombre de destinataires (à/cc/cci) avant de spécifier leurs adresses. C'est donc un gain de temps !

Parmi les propriétés qu'on peut spécifier :
  • Sujet : texte contenant le sujet de votre message.
  • Expéditeur : champ "From" de l'en-tête du message ; peut contenir un e-mail ou du texte (exemple : NOM ). 
  • Destinataire : tableau contenant les adresses e-mail des destinataires. On peut ajouter les éléments à l'aide de la fonction Ajoute (eMonMessage..Destinataire, "email")
  • Cc / Cci : tous deux des tableaux, permettent d'ajouter des destinataires en copie conforme (invisible ou non). On peut aussi utiliser la fonction Ajoute() pour les remplir.
  • Message : texte au format brut ; si on ne souhaite pas utiliser de mise en forme  spécifique. Certains destinataires préfèrent en effet recevoir des messages sans formatage.
  • HTML : si on souhaite avoir une mise en forme il faut alors spécifier le contenu en HTML. On pourra l'importer depuis un fichier (avec toutes les images associées) ou saisir directement le code.
              
Exemple :
                

Sur l'image on peut voir qu'on renseigne bien l'expéditeur, le sujet, le contenu du message (texte brut) ainsi que le destinataire. Dans cet exemple vous constaterez que les adresses e-mail sont stockées dans des variables locales.

Attacher un fichier

Il est possible d'attacher un ou plusieurs fichiers à votre e-mail. Vous pouvez soit passer par la variable EmailAttache, soit utiliser la fonction EmailChargeFichierAttaché(). Cette dernière est très pratique car il n'est pas nécessaire de s'occuper de charger le contenu du fichier à l'aide de code supplémentaire ou de définir le type MIME. On passe en paramètre la variable de type Email et le chemin du fichier à attacher.


Bien sûr si vous souhaitez utiliser la variable EmailAttache, vous pouvez toujours consulter l'exemple dans la documentation officielle de PC SOFT. En résumé, il suffit de spécifier les propriétés Nom, Contenu (on utilise fChargeTexte() pour ça), ContentType (type MIME) et ContentDescription, puis de l'ajouter dans le tableau des fichiers attachés de notre message initial.

Ouvrir la session et envoyer le message

On va ici ouvrir la session à l'aide de la fonction EmailOuvreSessionSMTP() qui renvoie un booléen pour déterminer si la connexion a abouti. Les paramètres de cette fonction sont, dans l'ordre :
  • Nom d'utilisateur ; celui-ci sera réutilisé en tant qu'identifiant de session.
  • Mot de passe : lié au compte utilisateur.
  • Serveur : adresse IP ou nom DNS du serveur auquel on se connecte.
  • Port : port lié au serveur (ex : 25 par défaut, 587 pour une connexion TLS).
  • Mode asynchrone : utilisé uniquement pour le web.
  • Options : facultatif, à utiliser dans le cas d'une connexion TLS/SSL.
              
Exemple :
           

Ensuite, comme on peut le voir dans l'exemple ci-dessus, on va appeler la fonction EmailEnvoieMessage() si la session a bien été ouverte. En paramètre on spécifiera l'identifiant de la session SMTP (donc le nom d'utilisateur dans ce cas) et la variable Email qui a été construite lors des étapes précédentes. La fonction renvoie également un booléen pour indiquer si le mail est bien parti ou non. En cas d'erreur, on peut afficher les informations issues de ErreurInfo().

Il faut ensuite fermer la session avec EmailFermeSession(). Le paramètre est de nouveau l'identifiant de la session, qui est dans notre cas, le nom de l'utilisateur. Voilà, c'est terminé, vous savez désormais envoyer des e-mails avec Windev.

Aucun commentaire: