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">&#160;</td>
            <td>
              <xsl:call-template name="afficheHTML">
                <xsl:with-param name="xpath" select="/BODY/CONTENT"/>
              </xsl:call-template>
            </td>
            <td width="20">&#160;</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">
    &lt;<xsl:value-of select="name(.)"/>&#160;<xsl:apply-templates select="@*" mode="copy"/>&gt;
    <blockquote>
      <div>
        <xsl:apply-templates select="*|text()" mode="copy"/>
      </div>
    </blockquote>
    &lt;/<xsl:value-of select="name(.)"/>&gt;<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="."/>"&#160;
  </xsl:template>

  <xsl:template match="*" mode="copy2">
    aa&lt;<xsl:value-of select="name(.)"/>&gt;<xsl:apply-templates select="*|text()" mode="copy2"/>&lt;/<xsl:value-of select="name(.)"/>&gt;<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="."/>"&#160;
  </xsl:template>
</xsl:stylesheet>

Laisser un commentaire0

Your email address will not be published. Required fields are marked *