Cas standard de SendMailAction : contenu avec un bandeau moteur expédié par Smtp.
Exemple de XML
<action section="sendMail">
<sender>smtpSender</sender>
<from>
<mail>agora@synasav.fr</mail>
<name>SYNASAV</name>
</from>
<to>
<mail>{{demande.EMAIL_PRO}}</mail>
<name>{{demande.NOMINDIVIDU}}</name>
</to>
<subject type="string">Votre demande d'adhésion QualiSAV a été validée</subject>
<htmlContent type="engine" handler="mailHandler">
<handler>mailHandler</handler>
<params>
<param name="subject">Votre demande d'adhésion QualiSAV a été validée</param>
<param name="content">
<![CDATA[
<p>Bonjour,</p>
<p>
Votre demande d'adhésion QualiSAV pour le millésime {{demande.ANNEE}} et le site {{demande.SITE}} a été validée par le SYNASAV.<br/>
Rendez-vous <a href="https://extranet.synasav.fr/site/{{demande.SITEID}}/adhesion">ici</a> pour consulter les informations.
</p>
<p>A bientôt sur notre extranet,</p>
<p>L'équipe technique SYNASAV</p>
]]>
</param>
</params>
</htmlContent>
<varName>retourMail</varName>
</action>
Eléments à indiquer dans la configuration
Le sender
Le sender implémente Activsoft.Workflow.Mail.Send.SmtpSender et la section de configuration a les attributs suivants :
- server
- port
- login
- password
- ssl : 1 si oui
- sandBox : si une adresse email est précisé dans sandBox les emails des destinataires sont ignorés et remplacés par cette adresse email
- nosend : 1 si oui, se contente de logger mais n’envoie pas le message
L’implémentation du moteur
Le mailHandler contient un extracteur qui contient un extracteur de la classe Activsoft.Workflow.Mail.Send.SimpleEMailContentExtractor qui possède les attributs de configuration suivants :
- subjectParameter : nom du paramètre de monConfig contenant le sujet
- contentParameter : nom du paramètre de monconfig contenant le contenu
- xslFile : le fichier XSL contenant le bandeaux de l’email, afin de définir un modèle (exemple en bas de cette page)
Le renderer est de la classe Activsoft.Workflow.Mail.Send.PrecompiledRendererFactory qui fait de la transformation simple du XSL.
Exemple de XSL de bandeau de mail
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:acs="http://www.activsoft.fr/dashboard/"
xmlns:user="http://www.activsoft.fr/userfunctions/"
xmlns:menu="http://www.activsoft.fr/usermenu/"
xmlns:right="urn:RightManager"
exclude-result-prefixes="msxsl acs user">
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title><xsl:value-of select="/BODY/SUBJECT"/></title>
</head>
<body width="800">
<table cellpadding="0" cellspacing="0" border="0" width="800">
<tr>
<td colspan="3"><img src="https://synasav.yoocan.fr/img/email/bandeau.png"/><br/></td>
</tr>
<tr>
<td width="20"> </td>
<td>
<xsl:call-template name="afficheHTML">
<xsl:with-param name="xpath" select="/BODY/CONTENT"/>
</xsl:call-template>
</td>
<td width="20"> </td>
</tr>
<tr>
<td colspan="3" style="padding-top: 20px">
<a href="https://www.synasav.fr/files/Emma/Actualites/Pdf/TUTO_AGORA.pdf">Tuto d'utilisation Agora</a>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
<xsl:template name="afficheHTML">
<xsl:param name="xpath" />
<xsl:choose>
<xsl:when test="$xpath/*">
<xsl:copy>
<xsl:apply-templates select="$xpath/*" mode="afficheHTML" />
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$xpath" disable-output-escaping="yes" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="@* | node()" mode="afficheHTML">
<xsl:copy>
<xsl:apply-templates select="node() | @* | text()" mode="afficheHTML" />
</xsl:copy>
</xsl:template>
<xsl:template match="text()" mode="afficheHTML">
<xsl:value-of disable-output-escaping="yes" select="." />
</xsl:template>
<xsl:template match="*" mode="copy">
<<xsl:value-of select="name(.)"/> <xsl:apply-templates select="@*" mode="copy"/>>
<blockquote>
<div>
<xsl:apply-templates select="*|text()" mode="copy"/>
</div>
</blockquote>
</<xsl:value-of select="name(.)"/>><br/>
</xsl:template>
<xsl:template match="text()" mode="copy">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="@*" mode="copy">
<xsl:value-of select="name(.)"/>="<xsl:value-of select="."/>" 
</xsl:template>
<xsl:template match="*" mode="copy2">
aa<<xsl:value-of select="name(.)"/>><xsl:apply-templates select="*|text()" mode="copy2"/></<xsl:value-of select="name(.)"/>><br/>
</xsl:template>
<xsl:template match="text()" mode="copy2">
bb<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="@*" mode="copy2">
<xsl:value-of select="name(.)"/>="<xsl:value-of select="."/>" 
</xsl:template>
</xsl:stylesheet>