Envoyer un mail avec du texte au format HTML avec SQL grâce à SYSTOOLS.SEND_EMAIL
Objectifs :
La fonction scalaire SQL SYSTOOLS.SEND_EMAIL permet d’envoyer, avec une seule requête SQL, un mail :
- A un ou plusieurs destinataires
- Avec un ou plusieurs destinataires en copie
- Avec un ou plusieurs destinataires en copie cachée
- Avec une ou plusieurs pièces jointes
Mais elle permet également de :
- formater le corps du mail au format HTML
C’est cette dernière fonctionnalité que nous allons voir ici.
Elle est particulièrement utile pour améliorer la lisibilité des mails envoyés.
Cette fonction permet de générer des mails de qualité à la volée dans les traitements batch par exemple.
ATTENTION : en V7R5 le paramètre BODY_TYPE n’est disponible qu’avec la PTF suivante :

Exemple sans mise en forme :
Sans le paramètre BODY_TYPE le formatage du texte du mail est impossible. Les phrases se suivent. Le texte est uniforme.
SELECT CASE WHEN SYSTOOLS.SEND_EMAIL(‘mon_adresse_mail_de_destination’,
‘Utilisation de SYSTOOLS.SEND_EMAIL sans formatge du corps du message’,
‘Bonjour, ceci est le texte du mail envoyé avec la fonction SYSTOOLS.SEND_EMAIL.’ CONCAT
‘Dans cet exemple le paramètre BODY_TYPE n est pas utilsé et le texte non formaté..’) = 1
THEN ‘EMAIL envoyé’
ELSE ‘Erreur mail non envoyé’
END AS RESULTAT_ENVOI
FROM SYSIBM.SYSDUMMY1;
Le résultat obtenu est le suivant :

Le mail est bien envoyé, bien reçu mais la mise en forme est très succincte et peu lisible. Dans cet exemple cela passe encore car le texte envoyé est très court mais lorsque le texte est plus long et qu’il contient des suites d’informations, il devient vite extrêmement difficile à lire.
Exemple avec mise en forme HTML :
Le paramètre BODY_TYPE de la fonction SYSTOOLS.SEND_EMAIL permet d’insérer dans le texte à envoyer des balises HTML qui vont permettre de structurer et mettre en forme ce texte de façon à le rendre beaucoup plus agréable à lire.
VALUES CASE WHEN SYSTOOLS.SEND_EMAIL(
TO_EMAIL => ‘mon_adresse_mail_de_destination’,
SUBJECT => ‘Exemple de mail au format HTML généré avec SYSTOOLS.SEND_EMAIL’,
BODY => ‘Voici un exmple des différentes balises HTML les plus courantes.</br>’ CONCAT
‘Bien sûr il en existe beaucoup d'autres…</br>’ CONCAT
‘Mais ces quelques balises montrent déjà ce qu'il est possible de faire ‘ CONCAT
‘avec <b>SYSTOOLS.SEND_EMAIL</b> et <b>BODY_TYPE</b></br></br>’ CONCAT
‘<h1>Mail au format HTML envoyé avec SYSTOOLS.SEND_EMAIL</h1>’ CONCAT
‘<h2>Balises de mises en forme de texte</h2>’ CONCAT
‘<ul>’ CONCAT
‘<li>Ajouter un saut de ligne</br>avec la balise <b>‹br›</b>’ CONCAT
‘<li>Mettre le texte en <b>GRAS</b> avec la balise <b>‹b›</b>’ CONCAT
‘<li>Mettre le texte en <i>italique</i> avec la balise <b>‹i›</b>’ CONCAT
‘<li>Barrer le <strike>texte</strike> avec la balise <b>‹strike›</b>’ CONCAT
‘<li>Souligner le <u>texte</u> avec la balise <b>‹u›</b>’ CONCAT
‘<li>Définir des paragraphes avec la balise <b>‹p›</b> et la balise <b>‹/p›</b>’ CONCAT
‘<li>Définir des listes à puces avec les balises <b>‹ul›</b> et <b>‹/ul›</b>’ CONCAT
‘<li>Définir des listes numérotées avec les balises <b>‹ol›</b> et <b>‹/ol›</b>’ CONCAT
‘<li>Définir des éléments de liste avec la balise <b>‹li›</b> et <b>‹/li›</b>’ CONCAT
‘<li>Modifier les polices de caractères avec la balise <b>‹font›</b>’ CONCAT
‘</br>Exemples de différentes <b><font size= »3″ color= »blue »>Balises FONT</font></b>’ CONCAT
‘<ol><li><font size= »1″ color= »green »>Taille : 1 – Couleur : vert</font>’ CONCAT
‘<li><font size= »2″ color= »red »>Taille : 2 – Couleur : rouge</font>’ CONCAT
‘<li><font size= »3″ color= »blue »>Taille : 3 – Couleur : bleu</font>’ CONCAT
‘</ol></ul>’ CONCAT
‘<h2>Définir des tableaux avec les balises <b> ‘ CONCAT
‘‹table› ‹tr› ‹th› ‹td›</b></h2>’ CONCAT
‘<table border= »2″>’ CONCAT
‘<tr><th>Balise</th><th>Resultat</th></tr>’ CONCAT
‘<tr><td>font size=1 color=green</td><td><font size= »1″ color= »green »>Exemple de texte</font></td></tr>’ CONCAT
‘<tr><td>font size=2 color=red</td><td><font size= »2″ color= »red »>Exemple de texte</font></td></tr>’ CONCAT
‘<tr><td>font size=3 color=blue</td><td><font size= »3″ color= »blue »>Exemple de texte</font></td></tr>’ CONCAT
‘</table>’ CONCAT
‘</ol>’ CONCAT
‘</ul>’ CONCAT
‘<h2>Insertion des liens ou d'images</h2>’ CONCAT
‘<ol>’ CONCAT
‘<li>Une image : avec la balise <b>‹img›</b></br>’ CONCAT
‘<img alt= »Image La Boîte à OUT-i » ‘ CONCAT
‘src= »http://www.laboiteaout-i.fr/wp-content/uploads/2024/12/LA-BOITE-A-OUTI-NEONS-BLEUS-ARRONDIS-768×418.jpg »‘ CONCAT
‘ width= »200″ height= »108″></br></br>’ CONCAT
‘<li>Un lien : avec la balise <b>‹a›</b></br>’ CONCAT
‘<a href= »www.laboiteaout-i.fr »>Ceci est un lien vers le site La Boîte à OUT-i !</a></br>’,
ATTACHMENT => DEFAULT,
CC_EMAIL => DEFAULT,
BCC_EMAIL => DEFAULT,
BODY_TYPE => ‘*HTML’
) = 1
THEN ‘EMAIL envoyé’
ELSE ‘Erreur’
END;
Le résultat obtenu est le suivant :

Le résultat est un mail parfaitement formaté, dans lequel peuvent être ajoutés des logos, des liens, des tableaux…
Et tout cela sans plugin, sans outils externes, directement à l’aide d’une seule requête SQL.