Salesforce 中的 Visualforce 電子郵件模板
已發表: 2021-05-13使用 Visualforce 電子郵件模板,用戶可以發送有針對性的個性化電子郵件。 模板創建者可以利用強大的 Visualforce 編程語言來創建模板化的電子郵件內容。
開發人員和管理員可以使用 Visualforce 創建電子郵件模板。 使用 Visualforce 優於標準 HTML 電子郵件模板的優勢在於,Visualforce 使您能夠對發送給收件人的數據執行高級操作。
所有 Visualforce 電子郵件模板都必須包含在單個 <messaging:emailTemplate> 標記中。 這類似於在單個 <apex:page> 標籤中定義的常規 Visualforce 頁面。
- <messaging:emailTemplate> 標記必須包含單個 <messaging:htmlEmailBody> 標記或單個 <messaging:plainTextEmailBody> 標記。
- <messaging:emailTemplate> 中無法使用多個標準 Visualforce 組件。 其中包括 <apex:detail>、<apex:pageBlock> 和所有相關的 pageBlock 組件,以及所有輸入組件,例如 <apex:form>。 如果您嘗試使用這些組件保存 Visualforce 電子郵件模板,則會顯示錯誤消息。
執行以下操作之一:
- 如果您有權編輯公共模板,請從“設置”中,在“快速查找”框中輸入“電子郵件模板”,然後選擇“經典電子郵件模板”。
- 如果您沒有編輯公共模板的權限,請轉到您的個人設置。 在快速查找框中輸入模板,然後選擇電子郵件模板或我的模板——以出現的一個為準。
- 1. 單擊新建模板。
- 2. 選擇 Visualforce 並單擊下一步。
- 3. 您不能使用 Visualforce 電子郵件模板發送群發電子郵件。
- 4. 選擇一個文件夾來存儲模板。
- 5. 要使模板可供使用,請選中“可供使用”複選框。
- 6. 在電子郵件模板名稱中輸入名稱。
- 7. 如有必要,更改模板唯一名稱。 當您使用 Lightning 平台 API 時,此唯一名稱是指組件。 在受管軟件包中,此唯一名稱可防止軟件包安裝中的命名衝突。 此名稱只能包含下劃線和字母數字字符,並且在您的組織中必須是唯一的。 它必須以字母開頭,不包含空格,不以下劃線結尾,並且不包含兩個連續的下劃線。 使用模板唯一名稱字段,您可以更改受管軟件包中某些組件的名稱,這些更改會反映在訂閱者的組織中。
- 8. 如果需要,從編碼下拉列表中選擇不同的字符集。
- 9. 輸入模闆說明。 模板名稱和描述僅供您內部使用。
- 10. 在電子郵件主題中輸入模板的主題行。
- 11. 在收件人類型下拉列表中,選擇要接收從模板創建的電子郵件的收件人類型。
- 12. 如果需要,在“相關類型”下拉列表中,選擇模板從中檢索合併字段數據的對象。
- 13. 單擊保存。
- 14. 在 Salesforce Classic 中的查看和編輯電子郵件模板頁面上,單擊編輯模板。
- 15. 為您的 Visualforce 電子郵件模板輸入標記文本。
注意:如果您要包含圖像,我們建議將其上傳到“文檔”選項卡以引用我們服務器上的圖像副本。 例如:
<apex:image id=”Logo” value=”https://yourInstance.salesforce.com/servlet/servlet.ImageServer?
id=015D0000000Dpwc&oid=00DD0000000FHaG&lastMod=127057656800″ />
- 1. 要指定 Visualforce 的版本以及與此電子郵件模板一起使用的 API,請單擊版本設置。 如果您已從 AppExchange 安裝受管軟件包,您還可以指定每個受管軟件包的哪個版本與此電子郵件模板一起使用。 通常,對所有版本使用默認值,將電子郵件模板與 Visualforce、API 和每個受管軟件包的最新版本相關聯。 要維護特定行為,您可以指定舊版本的 Visualforce 和 API。 要訪問與最新軟件包版本不同的組件或功能,您可以指定受管軟件包的舊版本。
- 2. 要查看模板的詳細信息,請單擊保存。 要繼續編輯模板,請單擊快速保存。 您的 Visualforce 標記必須有效,然後才能保存模板。

/********************* 電子郵件模板 1 *************/
示例 1:聯繫案例
接受者
<messaging:emailTemplate subject="帳戶和案例信息{!recipient.Name}" receiverType="Contact" >
<消息:htmlEmailBody >
<html>
<頭>
</頭>
<身體>
親愛的{!recipient.Name},<br/>
請找到您所有的未結案例:<br/>
<表>
<tr>
<th>案例編號</th>
<th>案例來源</th>
<th>案件狀態</th>
</tr>
<apex:repeat value="{!recipient.cases}" var="case">
<tr>
<td>{!case.CaseNumber}</td>
<td>{!case.Origin}</td>
<td>{!case.Status}</td>
</tr>
</apex:重複>
</table>
</正文>
</html>
</messaging:htmlEmailBody>
<消息:plainTextEmailBody >
恭喜!
這是您的新 Visualforce 電子郵件模板。
</messaging:plainTextEmailBody>
</messaging:emailTemplate>
/******************** 電子郵件模板 2 ***************/
示例 2:帳戶案例
收件人和相關人
<messaging:emailTemplate subject="Account Cases as Related To : {!relatedTo.Name}" receiverType="Contact" relatedToType="Account">
<消息:htmlEmailBody >
<html>
<頭>
</頭>
<身體>
親愛的 {!relatedTo.Name},<br/>
請找到您所有的未結案例:<br/>
<表>
<tr>
<th>案例編號</th>
<th>案例來源</th>
<th>案件狀態</th>
</tr>
<apex:repeat value="{!relatedTo.cases}" var="case">
<tr>
<td>{!case.CaseNumber}</td>
<td>{!case.Origin}</td>
<td>{!case.Status}</td>
</tr>
</apex:重複>
</table>
</正文>
</html>
</messaging:htmlEmailBody>
<消息:plainTextEmailBody >
恭喜!
這是您的新 Visualforce 電子郵件模板。
</messaging:plainTextEmailBody>
</messaging:emailTemplate>
示例 3:使用組件的學生費用詳細信息

<messaging:emailTemplate subject="提交學生費用" receiverType="Contact" relatedToType="Student__c">
<消息:htmlEmailBody >
<c:StudentFeesDetails stu></c:StudentFeesDetails>
</messaging:htmlEmailBody>
<消息:plainTextEmailBody >
恭喜!
這是您的新 Visualforce 電子郵件模板。
</messaging:plainTextEmailBody>
</messaging:emailTemplate>
/************* 結束電子郵件模板 ************/
/******************* 成分 ******************/
<apex:component controller="StudentFeesController" access="global">
<樣式>
表{邊框:1px實心#000;}
td,th {border: 1px solid #000}
</style>
<apex:attribute name="stuId"assignTo="{!studentId}" type="Id" description="Student Id" />
<h1>您的費用交易</h1>
<表>
<tr>
<th>日期</th>
<th>金額</th>
</tr>
<apex:repeat value="{!feesDetails}" var="fee">
<tr>
<td><apex:outputField value="{!fee.date__c}" /></td>
<td>{!fee.amount__c}</td>
</tr>
</apex:重複>
</table>
</apex:組件>
/************** 班級 ******************/
公共類 StudentFeesController{
公共 ID studentId {get;set;}
公共列表<費用__c> getFeesDetails(){
返回 [select id, amount__c, date__c from fee__c where student_Id__c =: studentId];
}
}
/******************* 頁 **********************/
<apex:page controller="SendVFEmailTemplateController">
<頂點:形式>
<頂點:頁面塊>
<apex:pageBlockButtons>
<apex:commandButton value="發送聯繫案例" action="{!sendCases}"/>
<apex:commandButton value="Send Account Cases" action="{!sendAccountCases}"/>
<apex:commandButton value="發送費用詳情" action="{!sendFeeDetails}"/>
</apex:pageBlockButtons>
</apex:pageBlock>
</apex:表單>
</apex:page>
/******************* 班級 ********************/
公共類 SendVFEmailTemplateController{
電子郵件模板等;
公共 SendVFEmailTemplateController(){
}
公共無效sendCases(){
et = [從 EmailTemplate 中選擇 Id, Name where 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 = [從 EmailTemplate 中選擇 Id, Name where 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 = [選擇 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(new Messaging.SingleEmailMessage[] {semail});
}
}
我們希望此博客能幫助您學習如何在 Salesforce 中使用 Visualforce 電子郵件模板。 如果您需要銷售團隊開發服務,請聯繫我們的銷售團隊諮詢團隊。
