Szablony e-mail Visualforce w Salesforce

Opublikowany: 2021-05-13

Dzięki szablonom e-mail Visualforce użytkownicy mogą wysyłać ukierunkowane i spersonalizowane wiadomości e-mail. Twórcy szablonów mogą wykorzystać potężny język programowania Visualforce do tworzenia treści wiadomości e-mail z szablonami.

Programiści i administratorzy mogą używać Visualforce do tworzenia szablonów wiadomości e-mail. Zaletą korzystania z Visualforce nad standardowymi szablonami wiadomości e-mail w formacie HTML jest to, że Visualforce daje możliwość wykonywania zaawansowanych operacji na danych wysyłanych do odbiorcy.

Wszystkie szablony wiadomości e-mail Visualforce muszą znajdować się w jednym tagu <messaging:emailTemplate>. Jest to analogiczne do definiowania zwykłych stron Visualforce w jednym tagu <apex:page>.

  • Znacznik <messaging:emailTemplate> musi zawierać pojedynczy znacznik <messaging:htmlEmailBody> lub pojedynczy znacznik <messaging:plainTextEmailBody>.
  • Kilka standardowych komponentów Visualforce nie jest dostępnych do użycia w <messaging:emailTemplate>. Obejmują one <apex:detail>,<apex:pageBlock> i wszystkie powiązane komponenty pageBlock oraz wszystkie komponenty wejściowe, takie jak <apex:form>. Jeśli spróbujesz zapisać szablon wiadomości e-mail Visualforce z tymi komponentami, zostanie wyświetlony komunikat o błędzie.

Wykonaj jedną z następujących czynności:

  • Jeśli masz uprawnienia do edytowania szablonów publicznych, w sekcji Konfiguracja wpisz Szablony wiadomości e-mail w polu Szybkie wyszukiwanie, a następnie wybierz Klasyczne szablony wiadomości e-mail.
  • Jeśli nie masz uprawnień do edytowania szablonów publicznych, przejdź do ustawień osobistych. Wprowadź Szablony w polu Szybkie wyszukiwanie, a następnie wybierz Szablony wiadomości e-mail lub Moje szablony — w zależności od tego, które z nich się pojawi.
  • 1. Kliknij Nowy szablon.
  • 2. Wybierz Visualforce i kliknij Dalej.
  • 3. Nie możesz wysłać masowej wiadomości e-mail za pomocą szablonu wiadomości e-mail Visualforce.
  • 4. Wybierz folder, w którym chcesz przechowywać szablon.
  • 5. Aby udostępnić szablon do użytku, zaznacz pole wyboru Dostępny do użycia.
  • 6. Wprowadź nazwę w polu Nazwa szablonu e-mail.
  • 7. W razie potrzeby zmień unikalną nazwę szablonu. Ta unikalna nazwa odnosi się do komponentu podczas korzystania z interfejsu Lightning Platform API. W pakietach zarządzanych ta unikatowa nazwa zapobiega konfliktom nazw podczas instalacji pakietów. Ta nazwa może zawierać tylko znaki podkreślenia i znaki alfanumeryczne i musi być unikalna w Twojej organizacji. Musi zaczynać się od litery, nie może zawierać spacji, nie może kończyć się podkreśleniem i nie może zawierać dwóch kolejnych znaków podkreślenia. Za pomocą pola Unikalna nazwa szablonu możesz zmienić nazwy niektórych składników w zarządzanym pakiecie, a zmiany zostaną odzwierciedlone w organizacji subskrybenta.
  • 8. W razie potrzeby wybierz inny zestaw znaków z listy rozwijanej Kodowanie.
  • 9. Wprowadź opis szablonu. Zarówno nazwa szablonu, jak i opis są przeznaczone wyłącznie do użytku wewnętrznego.
  • 10. Wprowadź wiersz tematu szablonu w temacie wiadomości e-mail.
  • 11. Z listy rozwijanej Typ odbiorcy wybierz typ odbiorcy wiadomości e-mail utworzonej z szablonu.
  • 12. W razie potrzeby z listy rozwijanej Powiązane z typem wybierz obiekt, z którego szablon pobiera dane pola scalania.
  • 13. Kliknij Zapisz.
  • 14. Na stronie Wyświetl i edytuj szablony wiadomości e-mail w klasycznej wersji Salesforce kliknij Edytuj szablon.
  • 15. Wprowadź tekst znacznika dla szablonu wiadomości e-mail Visualforce.

UWAGA: Jeśli dołączasz obraz, zalecamy przesłanie go do zakładki Dokumenty, aby odwołać się do kopii obrazu na naszym serwerze. Na przykład:

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

  • 1. Aby określić wersję Visualforce i API używane z tym szablonem wiadomości e-mail, kliknij Ustawienia wersji. Jeśli zainstalowałeś zarządzane pakiety z AppExchange, możesz również określić, której wersji każdego zarządzanego pakietu chcesz używać z tym szablonem wiadomości e-mail. Zwykle używaj wartości domyślnej dla wszystkich wersji, aby powiązać szablon wiadomości e-mail z najnowszą wersją Visualforce, interfejsem API i każdym zarządzanym pakietem. Aby zachować określone zachowanie, możesz określić starszą wersję Visualforce i API. Aby uzyskać dostęp do składników lub funkcji, które różnią się od najnowszej wersji pakietu, można określić starszą wersję pakietu zarządzanego.
  • 2. Aby wyświetlić szczegóły szablonu, kliknij Zapisz. Aby kontynuować edycję szablonu, kliknij Szybki zapis. Twoje znaczniki Visualforce muszą być prawidłowe, zanim będziesz mógł zapisać szablon.
zatrudniać programistów Salesforce

/********************* Szablon wiadomości e-mail 1 ***********/
Przykład 1: Sprawy kontaktowe
Odbiorca

 <messaging:emailTemplate subject="Informacje o koncie i sprawach {!recipient.Name}" receiverType="Kontakt">
<messaging:htmlEmailBody >
    <html>
    <głowa>
    </head>
    <ciało>
        Drogi {!Recipient.Name},<br/>
        Znajdź wszystkie otwarte sprawy:<br/>
        <tabela>
        <tr>
            <th>Numer sprawy</th>
            <th>Pochodzenie sprawy</th>
            <th>Stan sprawy</th>
        </tr>
        <apex:repeat value="{!recipient.cases}" var="case">
        <tr>
            <td>{!case.Numer sprawy}</td>
            <td>{!case.Origin}</td>
            <td>{!case.Status}</td>
        </tr> 
        </apex:powtórz>
        </table>
    </body>
</html>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
Gratulacje!
To jest Twój nowy szablon e-mail Visualforce.
</messaging:plainTextEmailBody>
</messaging: e-mailTemplate>

/******************** Szablon e-maila 2 ***************/
Przykład 2: Sprawy dotyczące kont
Odbiorca i powiązany z

 <messaging:emailTemplate subject="Sprawy dotyczące konta powiązane z: {!relatedTo.Name}" receiverType="Kontakt" relatedToType="Account">
<messaging:htmlEmailBody >
    <html>
    <głowa>
    </head>
    <ciało>
        Drogi {!relatedTo.Name},<br/>
        Znajdź wszystkie otwarte sprawy:<br/>
        <tabela>
        <tr>
            <th>Numer sprawy</th>
            <th>Pochodzenie sprawy</th>
            <th>Stan sprawy</th>
        </tr>
        <apex:repeat value="{!relatedTo.cases}" var="case">
        <tr>
            <td>{!case.Numer sprawy}</td>
            <td>{!case.Origin}</td>
            <td>{!case.Status}</td>
        </tr> 
        </apex:powtórz>
        </table>
    </body>
</html>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
Gratulacje!
To jest Twój nowy szablon e-mail Visualforce.
</messaging:plainTextEmailBody>
</messaging: e-mailTemplate>

Przykład 3: Szczegóły opłat studenckich za pomocą komponentu

 <messaging:emailTemplate subject="Przesyłanie opłat studenckich" receiverType="Kontakt" relatedToType="Student__c">
<messaging:htmlEmailBody >
    <c:StudentFeesDetails stu></c:StudentFeesDetails>
</messaging:htmlEmailBody>
<messaging:plainTextEmailBody >
Gratulacje!
To jest Twój nowy szablon e-mail Visualforce.
</messaging:plainTextEmailBody>
</messaging: e-mailTemplate>

/*************** Zakończ szablony wiadomości e-mail ************/

/******************* Składnik ******************/

 <apex:component controller="StudentFeesController" access="global">
    <Styl>
    table{border:1px solid #000;}
        td,th {obramowanie: 1px stałe #000}
    </style>
    <apex:attribute name="stuId" assignTo="{!studentId}" type="Id" description="Identyfikator ucznia" />
    <h1>Oferty dotyczące opłat</h1>
    <tabela>
    <tr>
        <th>Data</th>
        <th>Kwota</th>
    </tr>
    <apex:repeat value="{!feesDetails}" var="opłata" >
        <tr>
            <td><apex:outputField value="{!fee.date__c}" /></td>
            <td>{!fee.amount__c}</td>
        </tr>
    </apex:powtórz>
    </table>
</apex:komponent>

/************** Klasa ******************/

 public class StudentFeesController{
    publiczny identyfikator studentId {get;set;}
    public List<Opłaty__c> getFeesDetails(){
        return [wybierz id, kwota__c, data__c z opłat__c gdzie student_Id__c =: studentId];
    }
}

/******************** Strona **********************/

 <apex:page controller="SendVFEmailTemplateController">
    <wierzchołek:forma>
        <apex:pageBlock>
            <apex:pageBlockButtons>
                <apex:commandButton value="Wyślij sprawy kontaktowe" action="{!sendCases}"/>
                <apex:commandButton value="Wyślij sprawy dotyczące kont" action="{!sendAccountCases}"/>
                <apex:commandButton value="Wyślij szczegóły opłat" action="{!sendFeeDetails}"/>
                
            </apex:pageBlockButtons>
        </apex:pageBlock>
    </apex:forma>
</apex:strona>

/******************* Klasa ********************/

 public class SendVFEmailTemplateController{
    Szablon e-mail et;
    public SendVFEmailTemplateController(){
    
    }
    
    public void sendCases(){
        et = [wybierz identyfikator, nazwę z szablonu e-mail, gdzie DeveloperName = 'Account_Cases'];
        Messaging.SingleEmailMessage semail = nowy Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00328000005cwjF');
        semail.setTemplateId(et.Id);
        Messaging.sendEmail(nowa Messaging.SingleEmailMessage[] {semail});
    }
    
    public void sendAccountCases(){
        et = [wybierz identyfikator, nazwę z szablonu e-mail, gdzie nazwa_programisty = 'Account_s_cases'];
        Messaging.SingleEmailMessage semail = nowy Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00335672305cwjF');
        semail.setTemplateId(et.Id);
        semail.setWhatId('00123400006azlA');
        Messaging.sendEmail(nowa Messaging.SingleEmailMessage[] {semail});
    }
    
    public void sendFeeDetails(){
        et = [wybierz identyfikator, nazwę z szablonu e-mail, gdzie nazwa_programisty = 'Informacje_o_opłatach_studenta'];
        Messaging.SingleEmailMessage semail = nowy Messaging.SingleEmailMessage ();
        semail.setTargetObjectId('00335672305cwjF');
        semail.setTemplateId(et.Id);
        semail.setWhatId('a002320080DGNjx');
        Messaging.sendEmail(nowa Messaging.SingleEmailMessage[] {semail});        
    }
}

Mamy nadzieję, że ten blog pomógł Ci w nauce korzystania z szablonów e-mail Visualforce w Salesforce. Jeśli potrzebujesz usług rozwoju Salesforce, skontaktuj się z naszym zespołem konsultingowym Salesforce.