在电子邮件模板中写入选项列表键而不是显示值

Write picklist key in email template instead of display value

我需要帮助如何在 Salesforce 的出站电子邮件中编写潜在客户 国家/地区代码。 我将此电子邮件用于外部系统的自动化。

无论我如何尝试,完整的国家名称都被写为代码和名称。

我试过的:

我在 Process Builder 中创建了一个工作流,当在 Salesforce 中创建新的 Lead 记录时,它会发送一封电子邮件。电子邮件模板如下所示:

companyName: {!Lead.Company}
countryName: {!Lead.Country}
countryCode: {!Lead.CountryCode}

<more code here removed for brewity>

(电子邮件模板是通过 工作流程操作 ->电子邮件警报 引用的,但这应该不相关。)

Salesforce 配置为使用国家/地区的默认 国家/地区 选择列表。 通过 Web-to-Lead Web 表单在 Salesforce 中创建新的潜在客户非常有效,其中 country_code 定义为:

<select  id="country_code" name="country_code">
  <option value="">--None--</option>
  <option value="CH">Switzerland</option>
</select>

通过以上配置,我可以从 Web-to-Lead 表单自动创建新的 Lead。 在 Salesforce 中,潜在客户的国家/地区如预期的那样 瑞士。 但是 Salesforce 自动生成的电子邮件将国家名称写了两次:

companyName: Test company
countryName: Switzerland
countryCode: Switzerland

我的期望:

companyName: Test company
countryName: Switzerland
countryCode: CH

普通的电子邮件模板对于您的需要来说太简单了。 SF 中的很多内容都是为了用户友好而设计的,通常您会看到选择列表标签,而不是保存在数据库中的实际值。如果您启用了翻译 workbench,您会在 French/German/what 中看到标签。

启用国家和州选项列表后,当您创建新记录时,UI 中的普通文本字段消失了。您认为您编辑了旧的国家/地区,但实际上显示了国家/地区代码,当然它具有值 CH,但显示的标签是瑞士。电子邮件也会尽职尽责地显示标签。

我认为您需要制作一个 Visualforce 电子邮件模板来实现此目的。像

<messaging:emailTemplate subject="62537607" recipientType="User" relatedToType="Lead">
<messaging:plainTextEmailBody >
Name: {!relatedTo.Name}
Company: Name: {!relatedTo.Company}
Country: {!relatedTo.Country}
CountryCode: {!relatedTo.CountryCode}
</messaging:plainTextEmailBody>
</messaging:emailTemplate>

使用 VF 电子邮件模板,您可以获得更多控制权,如果您需要特殊行为,您甚至可以制作一个 Apex 控制器(好吧,不是针对整个电子邮件,而是针对一个组件,您可以将该组件嵌入到电子邮件正文中) .默认情况下,将显示选项列表值,而不是标签。

例如,为称呼创建新的选择列表条目,标记为“Master blaster of disaster”,值为“Master”。如果将 {!relatedTo.Salutation} 添加到 VF 模板,您将只看到 Master.