Modèles d'e-mails Visualforce dans Salesforce
Publié: 2021-05-13Avec les modèles d'e-mails Visualforce, les utilisateurs peuvent envoyer des e-mails ciblés et personnalisés. Les créateurs de modèles peuvent exploiter le puissant langage de programmation Visualforce pour créer un contenu d'e-mail modélisé.
Les développeurs et les administrateurs peuvent utiliser Visualforce pour créer des modèles d'e-mail. L'avantage d'utiliser Visualforce par rapport aux modèles d'e-mail HTML standard est que Visualforce vous permet d'effectuer des opérations avancées sur les données envoyées à un destinataire.
Tous les modèles d'e-mail Visualforce doivent être contenus dans une seule balise <messaging:emailTemplate>. Ceci est analogue aux pages Visualforce normales définies dans une seule balise <apex:page>.
- La balise <messaging:emailTemplate> doit contenir une seule balise <messaging:htmlEmailBody> ou une seule balise <messaging:plainTextEmailBody>.
- Plusieurs composants Visualforce standard ne sont pas disponibles pour une utilisation dans <messaging:emailTemplate>. Ceux-ci incluent <apex:detail>, <apex:pageBlock> et tous les composants pageBlock associés, et tous les composants d'entrée tels que <apex:form>. Si vous essayez d'enregistrer un modèle d'e-mail Visualforce avec ces composants, un message d'erreur s'affiche.
Effectuez l'une des actions suivantes:
- Si vous êtes autorisé à modifier les modèles publics, dans Configuration, saisissez Modèles d'e-mail dans la case Recherche rapide, puis sélectionnez Modèles d'e-mail classiques.
- Si vous n'êtes pas autorisé à modifier les modèles publics, accédez à vos paramètres personnels. Saisissez Modèles dans la case Recherche rapide, puis sélectionnez Modèles d'e-mails ou Mes modèles, selon celui qui apparaît.
- 1. Cliquez sur Nouveau modèle.
- 2. Choisissez Visualforce et cliquez sur Suivant.
- 3. Vous ne pouvez pas envoyer un e-mail en masse à l'aide d'un modèle d'e-mail Visualforce.
- 4. Choisissez un dossier dans lequel stocker le modèle.
- 5. Pour rendre le modèle disponible pour utilisation, cochez la case Disponible pour utilisation.
- 6. Saisissez un nom dans Nom du modèle d'e-mail.
- 7. Si nécessaire, modifiez le nom unique du modèle. Ce nom unique fait référence au composant lorsque vous utilisez l'API Lightning Platform. Dans les packages gérés, ce nom unique empêche les conflits de noms dans les installations de packages. Ce nom ne peut contenir que des traits de soulignement et des caractères alphanumériques et doit être unique dans votre organisation. Il doit commencer par une lettre, ne pas inclure d'espaces, ne pas se terminer par un trait de soulignement et ne pas contenir deux traits de soulignement consécutifs. Avec le champ Nom unique du modèle, vous pouvez modifier les noms de certains composants dans un package géré et les modifications sont répercutées dans l'organisation d'un abonné.
- 8. Si vous le souhaitez, choisissez un autre jeu de caractères dans la liste déroulante Encodage.
- 9. Saisissez une description pour le modèle. Le nom et la description du modèle sont réservés à votre usage interne.
- 10. Saisissez une ligne d'objet pour votre modèle dans Objet de l'e-mail.
- 11. Dans la liste déroulante Type de destinataire, sélectionnez le type de destinataire pour recevoir l'e-mail créé à partir du modèle.
- 12. Si vous le souhaitez, dans la liste déroulante Type associé, sélectionnez l'objet à partir duquel le modèle récupère les données de champ de fusion.
- 13. Cliquez sur Enregistrer.
- 14. Sur la page Afficher et modifier les modèles d'e-mail dans Salesforce Classic, cliquez sur Modifier le modèle.
- 15. Saisissez le texte de balisage pour votre modèle d'e-mail Visualforce.
REMARQUE : Si vous incluez une image, nous vous recommandons de la télécharger dans l'onglet Documents pour référencer la copie de l'image sur notre serveur. Par exemple:
<apex:image id="Logo" value="https://yourInstance.salesforce.com/servlet/servlet.ImageServer?
id=015D0000000Dpwc&oid=00DD0000000FHaG&lastMod=127057656800″ />
- 1. Pour spécifier la version de Visualforce et l'API utilisée avec ce modèle d'e-mail, cliquez sur Paramètres de version. Si vous avez installé des packages gérés à partir d'AppExchange, vous pouvez également spécifier la version de chaque package géré à utiliser avec ce modèle d'e-mail. Généralement, utilisez la valeur par défaut pour toutes les versions, pour associer le modèle d'e-mail à la version la plus récente de Visualforce, de l'API et de chaque package géré. Pour conserver un comportement spécifique, vous pouvez spécifier une ancienne version de Visualforce et de l'API. Pour accéder aux composants ou aux fonctionnalités qui diffèrent de la version de package la plus récente, vous pouvez spécifier une ancienne version d'un package géré.
- 2. Pour afficher les détails du modèle, cliquez sur Enregistrer. Pour continuer à modifier votre modèle, cliquez sur Enregistrement rapide. Votre balisage Visualforce doit être valide pour que vous puissiez enregistrer votre modèle.
/************************ Modèle d'e-mail 1 *************/
Exemple 1 : Cas de contact
Destinataire
<messaging:emailTemplate subject="Informations sur le compte et les cas {!recipient.Name}" recipientType="Contact" > <messaging:htmlEmailBody > <html> <tête> </head> <corps> Cher {!recipient.Name},<br/> Veuillez trouver tous vos dossiers ouverts :<br/> <tableau> <tr> <th>Numéro de dossier</th> <th>Origine du cas</th> <th>État du dossier</th> </tr> <apex:repeat value="{!recipient.cases}" var="case"> <tr> <td>{!case.CaseNumber}</td> <td>{!case.Origine}</td> <td>{!case.Status}</td> </tr> </apex:repeat> </table> </body> </html> </messaging:htmlEmailBody> <messagerie : plainTextEmailBody > Toutes nos félicitations! Ceci est votre nouveau modèle d'e-mail Visualforce. </messaging:plainTextEmailBody> </message:emailTemplate>
/************************ Modèle d'e-mail 2 *******************/
Exemple 2 : Cas de compte
Destinataire et associé à
<messaging:emailTemplate subject="Cas de compte liés à : {!relatedTo.Name}" recipientType="Contact" relatedToType="Account"> <messaging:htmlEmailBody > <html> <tête> </head> <corps> Cher {!relatedTo.Name},<br/> Veuillez trouver tous vos dossiers ouverts :<br/> <tableau> <tr> <th>Numéro de dossier</th> <th>Origine du cas</th> <th>État du dossier</th> </tr> <apex:repeat value="{!relatedTo.cases}" var="case"> <tr> <td>{!case.CaseNumber}</td> <td>{!case.Origine}</td> <td>{!case.Status}</td> </tr> </apex:repeat> </table> </body> </html> </messaging:htmlEmailBody> <messagerie : plainTextEmailBody > Toutes nos félicitations! Ceci est votre nouveau modèle d'e-mail Visualforce. </messaging:plainTextEmailBody> </message:emailTemplate>
Exemple 3 : Détails des frais de scolarité à l'aide du composant
<messaging:emailTemplate subject="Soumission des frais de scolarité" recipientType="Contact" relatedToType="Student__c"> <messaging:htmlEmailBody > <c:StudentFeesDetails stu></c:StudentFeesDetails> </messaging:htmlEmailBody> <messagerie : plainTextEmailBody > Toutes nos félicitations! Ceci est votre nouveau modèle d'e-mail Visualforce. </messaging:plainTextEmailBody> </message:emailTemplate>
/****************** Terminer les modèles d'e-mails ************/
/************************ Composante ********************/
<apex:component controller="StudentFeesController" access="global"> <Style> table{border:1px solide #000;} td,th {bordure : 1px solide #000} </style> <apex:attribute name="stuId" assignTo="{!studentId}" type="Id" description="Student Id" /> <h1>Détails de vos frais</h1> <tableau> <tr> <th>Date</th> <th>Montant</th> </tr> <apex:repeat value="{!feesDetails}" var="fee" > <tr> <td><apex:outputField value="{!fee.date__c}" /></td> <td>{!fee.amount__c}</td> </tr> </apex:repeat> </table> </apex:composant>
/************** Classer ******************/
classe publique StudentFeesController{ ID public studentId {get;set;} Public List<Fees__c> getFeesDetails(){ return [sélectionnez l'identifiant, le montant__c, la date__c à partir des frais__c où student_Id__c =: studentId] ; } }
/************************ Page *************************/
<apex:page controller="SendVFEmailTemplateController"> <apex:form> <apex:pageBlock> <apex:pageBlockButtons> <apex:commandButton value="Envoyer les cas de contact" action="{!sendCases}"/> <apex:commandButton value="Send Account Cases" action="{!sendAccountCases}"/> <apex:commandButton value="Envoyer les détails des frais" action="{!sendFeeDetails}"/> </apex:pageBlockButtons> </apex:pageBlock> </apex:form> </apex:page>
/******************* Classer ********************/
classe publique SendVFEmailTemplateController{ EmailTemplate et; public SendVFEmailTemplateController(){ } public void sendCases(){ et = [select Id, Name from EmailTemplate où DeveloperName = 'Account_Cases']; Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage (); semail.setTargetObjectId('00328000005cwjF'); semail.setTemplateId(et.Id); Messaging.sendEmail(new Messaging.SingleEmailMessage[] {semail}); } public void sendAccountCases(){ et = [select Id, Name from EmailTemplate où DeveloperName = 'Account_s_Cases']; Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage (); semail.setTargetObjectId('00335672305cwjF'); semail.setTemplateId(et.Id); semail.setWhatId('00123400006azlA'); Messaging.sendEmail(new Messaging.SingleEmailMessage[] {semail}); } public void sendFeeDetails(){ et = [select Id, Name from EmailTemplate où DeveloperName = 'Student_Fees_Info']; Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage (); semail.setTargetObjectId('00335672305cwjF'); semail.setTemplateId(et.Id); semail.setWhatId('a00232080DGNjx'); Messaging.sendEmail(new Messaging.SingleEmailMessage[] {semail}); } }
Nous espérons que ce blog vous a aidé à apprendre à utiliser les modèles d'e-mail Visualforce dans Salesforce. Si vous avez besoin de services de développement de force de vente, contactez notre équipe de conseil en force de vente.