Visualforce-邮件模板(1)创建

开发人员和管理员可以使用Visualforce创建电子邮件模板。使用Visualforce超过标准HTML的优势电子邮件模板是Visualforce使您能够对发送给收件人的数据执行高级操作。
虽然Visualforce电子邮件模板使用标准的Visualforce组件,但它们不是以相同的方式创建的。 Visualforce电子邮件模板始终使用以消息传递名称空间开头的组件。此外:

  • 所有Visualforce电子邮件模板必须包含在一个<messaging:emailTemplate>标记中。这与在单个<apex:page>标签中定义的常规Visualforce页面类似。
  • <messaging:emailTemplate>标记必须包含单个<messaging:htmlEmailBody>标记或单个<messaging:plainTextEmailBody>标记。
  • 几个标准的Visualforce组件在<messaging:emailTemplate>中不可用。这些包括<apex:detail>,<apex:pageBlock>和所有相关的pageBlock组件以及所有输入组件,如<apex:form>。如果您尝试使用这些组件保存Visualforce电子邮件模板,则会显示一条错误消息。

创建一个Visualforce电子邮件模板

  1. 执行以下操作之一:
    • 如果您有权编辑公共模板,请从“设置”中,在快速查找方框中输入电子邮件模板,然后选择电子邮件模板。
    • 如果您无权修改公共模板,请转到个人设置。在快速查找框中输入模板,然后选择电子邮件模板或我的模板 – 无论哪一个出现。
  2. 点击 New Template.
  3. 选择 Visualforce 然后单击 Next.
    您无法使用Visualforce电子邮件模板发送群发电子邮件。
  4. 选择一个文件夹来存储模板。
  5. 要使模板可供使用,请选择可用的复选框。
  6. 在电子邮件模板名称中输入名称。
  7. 如有必要,请更改模板唯一名称。这个唯一的名称是指使用Force.com API时的组件。在托管包中,此唯一名称可防止程序包安装中的命名冲突。此名称只能包含下划线和字母数字字符,并且在您的组织中必须是唯一的。它必须以字母开头,不能包含空格,不能以下划线结尾,并且不要包含两个连续的下划线。使用“模板唯一名称”字段,可以更改托管数据包中某些组件的名称,这些更改将反映在订户组织中。
  8. 如果需要,请从编码下拉列表中选择不同的字符集。
  9. 输入模板的描述。模板名称和说明仅供您内部使用。
  10. 在电子邮件主题中输入您的模板的主题行。
  11. 在“收件人类型”下拉列表中,选择要从模板创建的收件人的类型。
  12. 如果需要,请在相关类型下拉列表中选择模板检索合并字段数据的对象。
  13. 点击 Save.
  14. 在Salesforce Classic页面的查看电子邮件模板中,单击编辑模板。
  15. 为您的Visualforce电子邮件模板输入标记文本。
    注意:如果您正在添加图片,我们建议将其上传到“文档”选项卡,以引用服务器上的图像副本。例如:
    <apex:image id=”Logo”
    value=”https://yourInstance.salesforce.com/servlet/servlet.ImageServer?
    id=015D0000000Dpwc&oid=00DD0000000FHaG&lastMod=127057656800″ />
  16. 要指定Visualforce的版本以及此电子邮件模板使用的API,请单击版本设置。如果您已经通过AppExchange安装了托管软件包,则还可以指定每个托管软件包的哪个版本与此电子邮件模板配合使用。通常,使用所有版本的默认值,将电子邮件模板与最新版本的Visualforce,API和每个托管软件包相关联。要保持特定的行为,您可以指定较旧版本的Visualforce和API。要访问与最新软件包版本不同的组件或功能,可以指定旧版本的托管软件包。
  17. 要查看模板的详细信息,请单击保存。要继续编辑您的模板,请点击快速保存。在保存模板之前,您的Visualforce标记必须有效。

注意:

Visualforce电子邮件模板的最大大小为1 MB。
您无法使用Visualforce电子邮件模板发送群发电子邮件。 {!Receiving_User.field_name}和
{!Sending_User.field_name}合并字段仅适用于海量电子邮件和列表电子邮件,并且在Visualforce电子邮件模板中不可用。

以下示例显示如何定义显示与联系人关联的所有情况的Visualforce电子邮件模板。 该示例使用<apex:repeat>标签遍历与联系人有关的所有情况,并将它们合并到主体中
模板:

<messaging:emailTemplate recipientType=”Contact”
relatedToType=”Account”
subject=”Case report for Account: {!relatedTo.name}”
language=”{!recipient.Languages__c}”
replyTo=”support@acme.com”>
<messaging:htmlEmailBody>
<html>
<body>
<p>Dear {!recipient.name},</p>
<p>Below is a list of cases related to {!relatedTo.name}.</p>
<table border=”0″ >
<tr>
<th>Case Number</th><th>Origin</th>
<th>Creator Email</th><th>Status</th>
</tr>
<apex:repeat var=”cx” value=”{!relatedTo.Cases}”>
<tr>
<td><a href =
“https://yourInstance.salesforce.com/{!cx.id}”>{!cx.CaseNumber}
</a></td>
<td>{!cx.Origin}</td>
<td>{!cx.Contact.email}</td>
<td>{!cx.Status}</td>
</tr>
</apex:repeat>
</table>
<p/>
<center>
<apex:outputLink value=”http://www.salesforce.com”>
For more detailed information login to Salesforce.com
</apex:outputLink>
</center>
</body>
</html>
</messaging:htmlEmailBody>
</messaging:emailTemplate>

注意以下关于标记:

  • recipientType和relatedToType属性充当电子邮件模板的控制器。有了它们,您可以访问其他标准控制器可用的相同合并字段。 recipientType属性表示电子邮件的收件人。 relatedToType属性表示与电子邮件关联的记录。 
  • <messaging:htmlEmailBody>组件可以包含Visualforce标记和HTML的组合。 <messaging:plainTextEmailBody>组件只能包含Visualforce标记和纯文本。 
  • 要根据收件人或相关对象的语言翻译Visualforce电子邮件模板,请使用
    <messaging:emailTemplate>标签的语言属性(有效值:Salesforce支持的语言键,例如“en-US”)。 language属性接受来自电子邮件模板的recipientType和relatedToType属性的合并字段。您可以创建用于合并字段的自定义语言字段。翻译工作台需要翻译电子邮件模板。该示例使用合并字段为接收电子邮件的联系人获取语言属性。