Visualforce-E-Mail-Vorlagen in Salesforce

Veröffentlicht: 2021-05-13

Mit Visualforce-E-Mail-Vorlagen können Benutzer gezielte und personalisierte E-Mails senden. Vorlagenersteller können die leistungsstarke Programmiersprache Visualforce nutzen, um E-Mail-Inhalte mit Vorlagen zu erstellen.

Entwickler und Administratoren können Visualforce verwenden, um E-Mail-Vorlagen zu erstellen. Der Vorteil der Verwendung von Visualforce gegenüber Standard-HTML-E-Mail-Vorlagen besteht darin, dass Visualforce Ihnen die Möglichkeit gibt, erweiterte Operationen an Daten durchzuführen, die an einen Empfänger gesendet werden.

Alle Visualforce-E-Mail-Vorlagen müssen in einem einzigen <messaging:emailTemplate>-Tag enthalten sein. Dies entspricht der Definition von regulären Visualforce-Seiten in einem einzelnen <apex:page>-Tag.

  • Das <messaging:emailTemplate>-Tag muss entweder ein einzelnes <messaging:htmlEmailBody>-Tag oder ein einzelnes <messaging:plainTextEmailBody>-Tag enthalten.
  • Mehrere Visualforce-Standardkomponenten stehen in <messaging:emailTemplate> nicht zur Verfügung. Dazu gehören <apex:detail>,<apex:pageBlock> und alle zugehörigen pageBlock-Komponenten sowie alle Eingabekomponenten wie <apex:form>. Wenn Sie versuchen, eine Visualforce-E-Mail-Vorlage mit diesen Komponenten zu speichern, wird eine Fehlermeldung angezeigt.

Führen Sie einen der folgenden Schritte aus:

  • Wenn Sie über die Berechtigung zum Bearbeiten öffentlicher Vorlagen verfügen, geben Sie unter "Setup" im Feld "Schnellsuche" E-Mail-Vorlagen ein und wählen Sie dann Klassische E-Mail-Vorlagen aus.
  • Wenn Sie keine Berechtigung zum Bearbeiten öffentlicher Vorlagen haben, gehen Sie zu Ihren persönlichen Einstellungen. Geben Sie Vorlagen in das Feld „Schnellsuche“ ein und wählen Sie dann E-Mail-Vorlagen oder Meine Vorlagen aus – je nachdem, was angezeigt wird.
  • 1. Klicken Sie auf Neue Vorlage.
  • 2. Wählen Sie Visualforce und klicken Sie auf Weiter.
  • 3. Sie können keine Massen-E-Mail mit einer Visualforce-E-Mail-Vorlage senden.
  • 4. Wählen Sie einen Ordner aus, in dem die Vorlage gespeichert werden soll.
  • 5. Um die Vorlage zur Verwendung bereitzustellen, aktivieren Sie das Kontrollkästchen Verfügbar zur Verwendung.
  • 6. Geben Sie unter Name der E-Mail-Vorlage einen Namen ein.
  • 7. Ändern Sie bei Bedarf den Eindeutigen Namen der Vorlage. Dieser eindeutige Name bezieht sich auf die Komponente, wenn Sie die Lightning-Plattform-API verwenden. In verwalteten Paketen verhindert dieser eindeutige Name Namenskonflikte bei Paketinstallationen. Dieser Name darf nur Unterstriche und alphanumerische Zeichen enthalten und muss in Ihrer Organisation eindeutig sein. Er darf mit einem Buchstaben beginnen, darf keine Leerzeichen enthalten, darf nicht mit einem Unterstrich enden und darf keine zwei aufeinanderfolgenden Unterstriche enthalten. Mit dem Feld Eindeutiger Vorlagenname können Sie die Namen bestimmter Komponenten in einem verwalteten Paket ändern und die Änderungen werden in der Organisation eines Abonnenten widergespiegelt.
  • 8. Wählen Sie bei Bedarf einen anderen Zeichensatz aus der Dropdown-Liste Kodierung.
  • 9. Geben Sie eine Beschreibung für die Vorlage ein. Sowohl der Vorlagenname als auch die Beschreibung sind nur für Ihren internen Gebrauch bestimmt.
  • 10. Geben Sie in E-Mail-Betreff eine Betreffzeile für Ihre Vorlage ein.
  • 11. Wählen Sie in der Dropdown-Liste Empfängertyp den Empfängertyp aus, der E-Mails erhalten soll, die aus der Vorlage erstellt wurden.
  • 12. Wählen Sie bei Bedarf in der Dropdown-Liste "Bezogen auf Typ" das Objekt aus, von dem die Vorlage Seriendruckfelddaten abruft.
  • 13. Klicken Sie auf Speichern.
  • 14. Klicken Sie auf der Seite E-Mail-Vorlagen in Salesforce Classic anzeigen und bearbeiten auf Vorlage bearbeiten.
  • 15. Geben Sie Markup-Text für Ihre Visualforce-E-Mail-Vorlage ein.

HINWEIS: Wenn Sie ein Bild einfügen, empfehlen wir, es auf die Registerkarte Dokumente hochzuladen, um auf die Kopie des Bildes auf unserem Server zu verweisen. Zum Beispiel:

<apex:image id=”Logo” value=”https://yourInstance.salesforce.com/servlet/servlet.ImageServer?
id=015D0000000Dpwc&oid=00DD0000000FHaG&lastMod=127057656800″ />

  • 1. Um die Version von Visualforce und die mit dieser E-Mail-Vorlage verwendete API anzugeben, klicken Sie auf Versionseinstellungen. Wenn Sie verwaltete Pakete von AppExchange installiert haben, können Sie auch angeben, welche Version jedes verwalteten Pakets mit dieser E-Mail-Vorlage verwendet werden soll. Verwenden Sie im Allgemeinen den Standardwert für alle Versionen, um die E-Mail-Vorlage mit der neuesten Version von Visualforce, der API und jedem verwalteten Paket zu verknüpfen. Um ein bestimmtes Verhalten beizubehalten, können Sie eine ältere Version von Visualforce und der API angeben. Um auf Komponenten oder Funktionen zuzugreifen, die sich von der neuesten Paketversion unterscheiden, können Sie eine ältere Version eines verwalteten Pakets angeben.
  • 2. Um die Details der Vorlage anzuzeigen, klicken Sie auf Speichern. Um mit der Bearbeitung Ihrer Vorlage fortzufahren, klicken Sie auf Schnellspeichern. Ihr Visualforce-Markup muss gültig sein, bevor Sie Ihre Vorlage speichern können.
Salesforce-Entwickler einstellen

/******************** E-Mail-Vorlage 1 ************/
Beispiel 1: Kontaktfälle
Empfänger

 <messaging:emailTemplate subject="Konto- und Kundenvorgänge {!recipient.Name}" receiverType="Contact" >
<messaging:htmlEmailBody >
    <html>
    <Kopf>
    </head>
    <Körper>
        Sehr geehrter {!recipient.Name},<br/>
        Hier finden Sie alle offenen Fälle:<br/>
        <Tabelle>
        <tr>
            <th>Fallnummer</th>
            <th>Fallherkunft</th>
            <th>Fallstatus</th>
        </tr>
        <apex:repeat value="{!recipient.cases}" var="case">
        <tr>
            <td>{!case.CaseNumber}</td>
            <td>{!case.Origin}</td>
            <td>{!case.Status}</td>
        </tr> 
        </apex:repeat>
        </table>
    </body>
</html>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
Herzliche Glückwünsche!
Dies ist Ihre neue Visualforce-E-Mail-Vorlage.
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

/******************** E-Mail-Vorlage 2 **************/
Beispiel 2: Kontofälle
Empfänger und RelatedTo

 <messaging:emailTemplate subject="Account Cases as Related To: {!relatedTo.Name}" receiverType="Contact" relatedToType="Account">
<messaging:htmlEmailBody >
    <html>
    <Kopf>
    </head>
    <Körper>
        Sehr geehrter {!relatedTo.Name},<br/>
        Hier finden Sie alle offenen Fälle:<br/>
        <Tabelle>
        <tr>
            <th>Fallnummer</th>
            <th>Fallherkunft</th>
            <th>Fallstatus</th>
        </tr>
        <apex:repeat value="{!relatedTo.cases}" var="case">
        <tr>
            <td>{!case.CaseNumber}</td>
            <td>{!case.Origin}</td>
            <td>{!case.Status}</td>
        </tr> 
        </apex:repeat>
        </table>
    </body>
</html>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
Herzliche Glückwünsche!
Dies ist Ihre neue Visualforce-E-Mail-Vorlage.
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

Beispiel 3: Einzelheiten zu den Studiengebühren unter Verwendung der Komponente

 <messaging:emailTemplate subject="Submission of Student Fees" receiverType="Contact" relatedToType="Student__c">
<messaging:htmlEmailBody >
    <c:StudentFeesDetails stu></c:StudentFeesDetails>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
Herzliche Glückwünsche!
Dies ist Ihre neue Visualforce-E-Mail-Vorlage.
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

/**************** E-Mail-Vorlagen beenden ************/

/******************** Komponente *****************/

 <apex:component controller="StudentFeesController" access="global">
    <Stil>
    table{border:1px solid #000;}
        td,th {border: 1px solid #000}
    </style>
    <apex:attribute name="stuId" AssignTo="{!studentId}" type="Id" description="Student Id" />
    <h1>Ihre Gebühren fallen an</h1>
    <Tabelle >
    <tr>
        <th>Datum</th>
        <th>Betrag</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:component>

/************** Klasse ******************/

 öffentliche Klasse StudentFeesController{
    öffentliche ID studentId {get;set;}
    öffentliche Liste<Gebühren__c> getFeesDetails(){
        zurückgeben [Auswahl ID, Betrag__c, Datum__c von Gebühren__c wobei student_Id__c =: studentId];
    }
}

/******************* Buchseite **********************/

 <apex:page controller="SendVFEmailTemplateController">
    <apex:form>
        <apex:pageBlock>
            <apex:pageBlockButtons>
                <apex:commandButton value="Kontaktfälle senden" action="{!sendCases}"/>
                <apex:commandButton value="Kontovorgänge senden" action="{!sendAccountCases}"/>
                <apex:commandButton value="Gebührendetails senden" action="{!sendFeeDetails}"/>
                
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:form>
</apex:page>

/******************* Klasse ********************/

 öffentliche Klasse SendVFEmailTemplateController{
    EmailTemplate et;
    public SendVFEmailTemplateController(){
    
    }
    
    public void sendCases(){
        et = [select Id, Name from EmailTemplate where DeveloperName = 'Account_Cases'];
        Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00328000005cwjF');
        semail.setTemplateId(et.Id);
        Messaging.sendEmail(neue Messaging.SingleEmailMessage[] {semail});
    }
    
    public void sendAccountCases(){
        et = [select Id, Name from EmailTemplate where DeveloperName = 'Account_s_Cases'];
        Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00335672305cwjF');
        semail.setTemplateId(et.Id);
        semail.setWhatId('00123400006azlA');
        Messaging.sendEmail(neue Messaging.SingleEmailMessage[] {semail});
    }
    
    public void sendFeeDetails(){
        et = [select Id, Name from EmailTemplate where DeveloperName = 'Student_Fees_Info'];
        Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00335672305cwjF');
        semail.setTemplateId(et.Id);
        semail.setWhatId('a002320080DGNjx');
        Messaging.sendEmail(neue Messaging.SingleEmailMessage[] {semail});        
    }
}

Wir hoffen, dass dieser Blog Ihnen dabei geholfen hat, die Verwendung von Visualforce-E-Mail-Vorlagen in Salesforce zu erlernen. Wenn Sie Salesforce-Entwicklungsdienste benötigen, wenden Sie sich an unser Salesforce-Beratungsteam.