# Modèle de mail
Les modèles de mail permettent de paramétrer les mails qui seront envoyés par la plateforme. Un modèle de mail permet de définir :
- l'expéditeur,
- le(s) destinataire(s),
- le sujet du mail,
- le corps du mail,
- les pièces jointes
Chacune de ces parties peut être dynamique en fonction des valeurs du Smart Element auquel le mail envoyé est rattaché.
# Paramétrage des modèles de mail
La configuration d'un modèle de mail est faite en suivant le schema XML https://platform.anakeen.com/4/schemas/mailtemplate/1.0
Exemple :
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL_E2E3"
workflow-model="MY_WFL_ARTICLE"
label="MY - Validation directeur - E2 - E3"
structure="MY_ARTICLE" >
<mail:from>
<mail:config-parameter ns="MY" label="mail_sender">MY_MAIL_SENDER</mail:config-parameter>
</mail:from>
<mail:recipients>
<mail:recipient dest="to">
<mail:element-account-field label="Responsable du service choisi">my_rs_dpi</mail:element-account-field>
</mail:recipient>
<mail:recipient dest="to">
<mail:element-account-field label="Chargé de partenariat international">my_charge_partenariat</mail:element-account-field>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:savecopy>false</mail:savecopy>
<mail:use-html-anchor>true</mail:use-html-anchor>
<mail:body content-type="html"><![CDATA[<p style="margin: 0pt;">
<span style="font-family: Verdana; font-weight: normal;"><font size="2">La fiche de </font></span><span style="font-family: Verdana; font-weight: normal;"><font size="2">l'action n°</font></span>[V_MY_NUM_ACTION]<span style="font-family: Verdana; font-weight: normal;"><font size="2">, intitulée </font></span>[V_MY_INTITULE_ACTION]<span style="font-family: Verdana; font-weight: normal;"><font size="2">, au bénéfice de </font></span>[V_MY_ACTEUR_PRINCIPAL]<span style="font-family: Verdana; font-weight: normal;"><font size="2">.</font></span><span style="font-family: Verdana; font-weight: normal;"><font size="2"> est validée et pourra donc être présentée à la prochaine réunion.</font></span></p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
Le modèle de mail porte les informations suivantes :
Titre (Obligatoire) : mailtemplate/@label
Titre sous lequel sera enregistré le modèle de mail.
Smart Structure : mailtemplate/@structure
Smart Structure à laquelle est rattaché le modèle de mail. Cette Smart
Structure permet de lister les Smart Fields qui seront utilisables pour la composition du mail.
Note
Dans l'éditeur du corps de message, les clefs des Smart Fields ne sont accessibles que lors d'une modification du Smart Element après avoir sélectionné la Smart Structure et non directement lors de l'ouverture du formulaire d'édition du modèle de mail.
Smart Structure workflow : mailtemplate/@workflow-model
Smart Structure du cycle de vie auquel est rattaché ce modèle
de mail. Cette Smart Structure permet de lister les Smart Fields qui seront utilisables pour la composition du mail.
L'émetteur : mailtemplate/from
Les destinataires mailtemplate/recipients/recipient
Le sujet : mailtemplate/subject
. Le sujet est un texte libre. Il peut contenir des parties variables issues du Smart
Element qui va être envoyé, sous la forme [BALISE]
. Les balises sont générées par le Smart Element, et peuvent être
complétées par le second paramètre de la méthode MailTemplate::sendMail()
.
Note
Le sujet d'un mail ne devant pas contenir de html, il est déconseillé d'utiliser les balises [V_TITLE]
ou
[V_ATTRID]
.
Le corps : mailtemplate/body
. Le corps est un texte html avec mise en forme. Il peut contenir des parties variables
issues du Smart Element qui va être envoyé, sous la forme [BALISE]
. Les balises sont générées par le Smart Element, et
peuvent être complétées par le second paramètre de la méthode MailTemplate::sendMail()
.
Les pièces jointes : mailtemplate/attachments/attachment
. Les fichiers attachés font référence à des Smart Fields de
type file (ou image) du Smart Element. Les fichiers seront alors en pièce jointe du courriel. Bien sûr, ces Smart
Fields peuvent être des listes de fichiers (Smart Field file ou image dans un tableau). Il est possible d'utiliser
la notation:
pour aller chercher des valeurs sur les Smart Elements liés (par exemple :TST_MYID:THE_FILE
récupère la
valeur du Smart FieldsTHE_FILE
dans le Smart Element référencé par le Smart Field relationTST_MYID
). La
notation:
peut être utilisée plusieurs fois pour aller de relation en relation (par exemple
:TST_RELATIONONEID:OTHER_RELATIONID:THE_FILE
).
# Spécification de l'émetteur ou du destinataire
L'émetteur ou les destinataires peuvent être choisis parmi les moyens suivants:
# Adresse fixe
Le destinataire est alors statique. L'adresse indiquée doit être dans une forme acceptable pour le champ from d'une
requête SMTP (ie. de la forme "nom expéditeur" <mail@host.net>
.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Fixe"
structure="MY_ARTICLE" >
<mail:from>
<mail:address>me@example.net</mail:address>
</mail:from>
<mail:recipients>
<mail:recipient dest="to">
<mail:address>you@example.net</mail:address>
<mail:address><![CDATA["my friend" <friend@example.net>]]></mail:address>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Adresse de l'utilisateur connecté À partir de la version 2021.01
- L'émetteur ou le destinataire est alors dynamique. Son adresse est automatiquement récupérée de l'utilisateur connecté.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Fixe"
structure="MY_ARTICLE" >
<mail:from>
<mail:current-user-email/>
</mail:from>
<mail:recipients>
<mail:recipient dest="to">
<mail:address>you@example.net</mail:address>
<mail:current-user-email/>
<mail:address><![CDATA["my friend" <friend@example.net>]]></mail:address>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
- Si aucun paramètre n'est ajouté alors l'adresse email de l'utilisateur connecté est automatiquement récupéré.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_AUTO_MAIL"
label="label"
structure="MY_STRUCTURE_NAME" >
<mail:from/>
<mail:recipients>
<mail:recipient dest="to">
<mail:address>example@mail.net</mail:address>
</mail:recipient>
</mail:recipients>
<mail:subject>Exemple de récupération de mail automatique</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
Note dans le cas de l'émetteur
Si l'utilisateur connecté n'a pas de courriel renseigné, l'adresse utilisée est celle du paramètre applicatif
SMTP_FROM
et si aucun courriel n'est renseigné dans le paramètre applicatif SMTP_FROM
le mail n' est pas envoyé.
# Valeur du Smart Element lié
# Smart Field texte
Le destinataire est alors dynamique et est rattaché à un Smart Field textuel du Smart Element. Ce Smart Field doit
contenir un courriel dans une forme acceptable pour le champ from d'une requête SMTP (ie. de la forme
"nom expéditeur" <mail@host.net
).
Il est possible d'utiliser la notation :
pour aller chercher des valeurs sur les Smart Elements liés (par exemple :
tst_myid:the_mail
récupère la valeur du Smart Field the_mail
dans le Smart Element référencé par le Smart Field
relation TST_MYID
.)
La notation :
peut être utilisée plusieurs fois pour aller de relation en relation (par exemple :
tst_relationoneid:other_relationid:the_mail
).
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:from>
<mail:element-field-value>my_sender_email</mail:element-field-value>
</mail:from>
<mail:recipients>
<mail:recipient dest="to">
<mail:element-field-value>my_writter_email</mail:element-field-value>
<mail:element-field-value>my_society:soc_email</mail:element-field-value>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Smart Field relation
Le destinataire est alors dynamique, et est rattaché à un Smart Field de type relation (account ou docid) du Smart Element.
Si le Smart Element cible implémente une méthode ::getMail()
, alors elle sera utilisée pour renseigner l'émetteur.
Sinon, il sera récupéré à partir du Smart Field us_mail
du Smart Element cible.
Note
Pour l'émetteur, les adresses de groupes ne peuvent être utilisées (il est en effet interdit de spécifier un émetteur multiple au niveau de la norme SMTP).
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:from>
<mail:element-account-field>my_sender</mail:element-account-field>
</mail:from>
<mail:recipients>
<mail:recipient dest="to">
<mail:element-account-field>my_writter</mail:element-account-field>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Paramètre de Smart Structure texte
Le destinataire est alors dynamique et est rattaché à un paramètre de la Smart Structure du Smart Element. Ce paramètre
doit contenir un courriel dans une forme acceptable pour le champ from d'une requête SMTP (ie. de la forme
"nom expéditeur" <mail@host.net
).
Note
La notation :
n'est pas autorisée pour les paramètres.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:from>
<mail:structure-parameter-value>my_sender_email</mail:structure-parameter-value>
</mail:from>
<mail:recipients>
<mail:recipient dest="to">
<mail:structure-parameter-value>my_writter_email</mail:structure-parameter-value>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Paramètre de Smart Structure relation
Le destinataire est alors dynamique et est rattaché à un paramètre de Smart Structure de type relation (account ou docid).
Si le Smart Element cible implémente une méthode ::getMail()
, alors elle sera utilisée pour renseigner l'émetteur.
Sinon, il sera récupéré à partir du Smart Field us_mail
du Smart Element cible.
Note
Pour l'émetteur, les adresses de groupes ne peuvent être utilisées (il est en effet interdit de spécifier un émetteur multiple au niveau de la norme SMTP.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:from>
<mail:structure-account-parameter>my_sender</mail:structure-account-parameter>
</mail:from>
<mail:recipients>
<mail:recipient dest="to">
<mail:structure-account-parameter>my_writter</mail:structure-account-parameter>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Valeur du workflow lié
# Smart Field cycle
Il se comporte comme un Smart Field texte mais est récupéré sur le workflow associé au Smart Element.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:recipients>
<mail:recipient dest="to">
<mail:workflow-account-field>my_writter_email</mail:workflow-account-field>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Relation cycle
Il se comporte comme un Smart Field relation mais est récupéré sur le workflow associé au Smart Element.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:recipients>
<mail:recipient dest="to">
<mail:workflow-account-field>my_writter</mail:workflow-account-field>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Paramètre cycle
Il se comporte comme un paramètre de Smart Structure texte, mais est récupéré sur la Smart Structure du workflow associé au Smart Element.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:recipients>
<mail:recipient dest="to">
<mail:workflow-parameter-value>my_writter_email</mail:workflow-parameter-value>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Smart Element destinataire
Le destinataire est obtenu dynamiquement, lors de l'envoi du mail, à partir d'un Smart Element qui implémente
l'interface IMailRecipient.
Les Smart Elements sélectionnables dans ce champ sont tous les Smart Elements dont la classe implémente l'interface
IMailRecipient
.
Le destinataire est obtenu de manière dynamique lors de l'envoi du mail par l'appel à la méthode ::getMail()
de ce
Smart Element.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:recipients>
<mail:recipient dest="to">
<mail:element-name>MY_FAVORITE_WRITER</mail:element-name>
</mail:recipient>
</mail:recipients>
<mail:subject>Validation [V_MY_STATUT_VALIDE_DIRECTEUR]</mail:subject>
<mail:body content-type="html"><![CDATA[<p>Hello</p>]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Sujet et corps du mail
Le sujet et le corps du mail sont des textes à partie variable. Les parties variables sont notées entre crochets simples. Par défaut, les clefs suivantes sont disponibles.
clefs | descriptions |
---|---|
[CORE_URLINDEX] | Url d'accès à votre serveur (défini par le paramètre applicatif de même nom) |
[V_TITLE] | Ancre HTML avec le titre, l'url du lien est calculée en fonction du paramètre applicatif CORE_MAILACTIONURL |
[TITLE] | Titre brute du Smart Element |
[ID] | Identifiant lié à la révision |
[INITID] | Identifiant numérique du Smart Element |
[REVISION] | Numéro de la révision |
[CDATE] | Date de la révision (format AAAA-MM-DD HH:MM) |
[MDATE] | Date de la dernière modification (format AAAA-MM-DD HH:MM) |
Les champs du Smart Element sont aussi disponibles par défaut. Pour chacun des champs, les clefs suivantes sont construites :
Pour le champ fieldid
, quatre clefs sont produites :
clefs | descriptions |
---|---|
[FIELDID] | Valeur brute du champ |
[V_FIELDID] | Valeur HTML du champ |
[L_FIELDID] | Le libellé du champ |
[S_FIELDID] | (booléen) true si la valeur n'est pas vide. À utiliser dans les balises [IF S_FIELDID] .. [ENDIF S_FIELDID] |
Info
Ces clefs sont toujours produites en majuscules et doivent être référencées en majuscule.
Le sujet étant du texte simple (non HTML), il est déconseillé d'utiliser les clefs V_XXX
. Au contraire pour le corps
du message, il est conseillé d'utiliser la clef V_XXX
.
Exemple : avec un Smart Element contenant le champ my_comment
.
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MAIL"
label="Relation texte"
structure="MY_ARTICLE" >
<mail:recipients>
<mail:recipient dest="to">
<mail:element-name>MY_FAVORITE_WRITER</mail:element-name>
</mail:recipient>
</mail:recipients>
<mail:use-html-anchor>true</mail:use-html-anchor>
<mail:subject>Validation de [TITLE]</mail:subject>
<mail:body content-type="html"><![CDATA[
Voici le lien [V_TITLE] vers l'information souhaitée.
<p>[V_MY_COMMENT]</p>
]]></mail:body>
</mail:mailtemplate>
</smart:config>
Sécurité
Si l'utilisateur courant n'a pas les droits d'accès à un champ, les clefs associées au champ seront vides.
# Hyperliens
# Calcul des liens
Les URLS dans les modèles de mail sont composées à partir de la valeur du paramètre CORE_MAILACTIONURL
, lui-même
composé à partir du paramètre CORE_MAILACTION
.
# Désactivation des liens
Lorsque le mail est envoyé à des personnes qui n'ont pas de compte sur le système d'information, il est inutile de leur
envoyer des liens vers des ressources auxquelles ils n'ont pas accès. Il est donc possible de désactiver tous les liens
vers les Smart Elements, au moyen de la balise mailtemplate/use-html-anchor
qui doit être mis à false
.
# Enregistrement des messages envoyés
Les messages envoyés peuvent être enregistrés. Dans ce cas, le message est stocké dans la Smart Structure message
envoyé (SENTMESSAGE
), et son profil est identique à celui du Smart Element servant à l'envoi.
Pour stocker le message il faut indiquer true
dans la balise mailtemplate/savecopy
.
Attention
Cela peut générer un grand nombre de Smart Elements, ce qui peut conduire à terme à une dégradation des performances.
# Historique
Pour chaque message envoyé, un message est ajouté à l'historique du Smart Element servant à l'envoi. Ce message contient :
- le titre du modèle de mail
- le sujet du message
- les destinataires.
Si une erreur survient lors de l'envoi du message, elle est ajoutée à l'historique du Smart Element servant à l'envoi, et est retournée à l'utilisateur.
# Limitations
Les messages ainsi générés ne sont pas des listes de diffusion : un seul mail est envoyé. Aussi, lors de l'envoi d'un message à plusieurs destinataires, tous recevront le même message, et il n'est pas possible de personnaliser le message par utilisateur.
Le sujet et le corps du mail ne peuvent pas faire appel à l'instruction BLOCK
.
# Envoyer un Smart Element avec modèle de mail par programmation
Les modèles de mails sont utilisés dans les workflows. Ils peuvent aussi être
utilisés par programmation. Les méthodes SmartStructure\MailTemplate::sendDocument()
et
SmartStructure\MailTemplate::getMailMessage()
permettent de gérer l'envoi de messages avec des modèles de mails.
# Envoyer un Smart Element avec un formulaire
Le modèle de mail est utilisable aussi depuis un formulaire d'envoi.
# Ajouter des clés personnalisées
Il est possible d'ajouter des clés personnalisées,dans les modèles de mail, sous la forme [BALISE]
. Ces balises sont
ajoutées à l'aide de la méthode getMailTemplateAdditionalKeys()
lorsque la classe PHP de la Smart Structure implémente
l'interface Anakeen\SmartStructures\Mailtemplate\IMailTemplateAdditionalKeys
.
# Paramètre de la fonction getMailTemplateAdditionalKeys
- template (MailTemplate):
modèle de mail pour lequel il faut ajouter les clés personnalisées.
# Retour
Cette fonction retourne un tableau indexé clé/valeur. Une valeur peut être :
- une chaine de caractère ou un nombre. Dans ce cas, la valeur peut être référencée directement par la clef placée entre
crochets. La valeur doit être du HTML. Il faut réaliser un échappement pour les valeurs brutes avec
htmlspecialchars()
par exemple. - un booléen. Dans ce cas, la valeur doit être référencée par les 2 balises
[IF key]... [ENDIF key]
. Le contenu placé entre ces deux balises est affiché si la valeur est vraie. Il existe aussi la balise[IFNOT key] .. [ENDIF key]
qui affiche le contenu si la valeur est fausse. - Un tableau de tableau à valeur indexées. Valeur utilisable par les balises
[BLOCK key] [index1], [index2] [ENDBLOCK key]
. (Voir exemple ci-dessous)
# Exemple
# Modèle avec valeur simple et conditions
Soit la structure MY_STUCTURE
avec les 2 champs numérique my_number1
et my_number2
. Sa classe de comportement
implémente l'interface IMailTemplateAdditionalKeys
.
<?php
namespace MyStructure;
use Anakeen\SmartStructures\Mailtemplate\IMailTemplateAdditionalKeys;
use SmartStructure\Mailtemplate;
class MyStructureBehaviour extends \Anakeen\SmartElement implements IMailTemplateAdditionalKeys
{
public function getMailTemplateAdditionalKeys(Mailtemplate $template)
{
return [
"CustomSubject" => "Un sujet en or",
"CustomWords" => "Voilà c'est supérieur à <b>10</b>",
"N1GT10" => intval($this->getRawValue("my_number1")) > 10,
"N2LT0" => intval($this->getRawValue("my_number2")) < 0,
"sumOf12" => intval($this->getRawValue("my_number1")) + intval($this->getRawValue("my_number2"))
];
}
}
<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MESSAGE_EXTRA_KEY"
label="Lien activé extra key" structure="TEST_MAIL_TEMPLATE_DOCUMENT">
<mail:recipients>
<mail:recipient dest="to">
<mail:address>bigboss@example.net</mail:address>
</mail:recipient>
</mail:recipients>
<mail:subject>[CustomSubject]</mail:subject>
<mail:body content-type="html"><![CDATA[
<span name="number1"> [V_MY_NUMBER1]</span>
<span name="number2">+ [V_MY_NUMBER2]</span>
<p name="number12">Total : [sumOf12]</p>
[IF N1GT10] <p>[CustomWords]</p> [ENDIF N1GT10]
]]></mail:body>
</mail:mailtemplate>
</smart:config>
# Cas d'un modèle avec une répétition. Utilisation des clefs BLOCK
/ ENDBLOCK
.
<?php
namespace MyStructure;
use Anakeen\SmartStructures\Mailtemplate\IMailTemplateAdditionalKeys;
use SmartStructure\Mailtemplate;
class MyStructureBehaviour extends \Anakeen\SmartElement implements IMailTemplateAdditionalKeys
{
public function getMailTemplateAdditionalKeys(Mailtemplate $template)
{
return [
"TWOKEYS" => [["keyone" => "K1", "keytwo" => 45], ["keyone" => "K2", "keytwo" => "67"]]
];
}
}
<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0"
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MY_MESSAGE_EXTRA_KEY_BLOCK1"
label="Lien activé extra key" structure="TEST_MAIL_TEMPLATE_DOCUMENT">
<mail:recipients>
<mail:recipient dest="to">
<mail:address>bigboss@example.net</mail:address>
</mail:recipient>
</mail:recipients>
<mail:subject>Un sujet</mail:subject>
<mail:body content-type="html">
<![CDATA[
<ul>[BLOCK TWOKEYS]<li>[keyone] ([keytwo])</li>[ENDBLOCK TWOKEYS]</ul>
]]>
</mail:body>
</mail:mailtemplate>
</smart:config>
Cela va fournir un corps de message avec le contenu suivant :
<ul><li>K1 (45)</li><li>K2 (67)</li></ul>