Salesforce HTML邮件模板转发异常:收件人收到原始HTML数据求助
嘿,这个问题我碰到过好多次,咱们一步步来搞定它:
先确认邮件模板的格式配置
打开你创建的HTML邮件模板,检查「格式」选项是不是选了HTML(或者HTML+文本混合)。如果不小心选成纯文本,那发送出去的邮件本质是纯文本,哪怕你写了HTML代码,也只会显示原始内容。另外,确保你的HTML代码是规范的——没有未闭合的标签、嵌套错误,这些小问题很容易导致邮件客户端转发时解析失败,把代码直接丢出来。验证邮件发送的Content-Type头
你可以先给自己发一封测试邮件,然后在邮箱里查看「原始邮件」(Gmail里点右上角三个点→显示原始,Outlook里右键→查看邮件源),找Content-Type这一行,确认它的值是text/html; charset=UTF-8之类的HTML类型。如果是text/plain,那问题就出在这儿:- 如果是用Apex代码发送的邮件,要确保调用了
setHtmlBody()方法,而不是只设置了纯文本内容; - 如果是通过Salesforce标准功能发送的,检查模板的「可用格式」是否正确勾选了HTML,并且发送时选择了HTML格式。
- 如果是用Apex代码发送的邮件,要确保调用了
换个转发方式试试
有时候Salesforce自带的转发功能会搞砸HTML格式,建议你先把测试邮件收到自己的邮箱客户端(比如Gmail、Outlook)里,再用客户端的转发功能发给其他人。客户端转发会保留原始的HTML结构,比在Salesforce里直接转发靠谱得多。优化HTML代码适配邮件客户端
邮件客户端对HTML的支持和浏览器不一样,复杂的代码很容易在转发时出错:- 把CSS都改成内联样式(比如
<td style="color: #333;">),别用外部样式表或者<style>标签; - 用
<table>来做布局,别依赖div的浮动、弹性布局这些; - 去掉所有JavaScript代码,邮件客户端基本都不支持JS;
- 合并字段要确保格式正确,比如
{!Contact.Name}别写错,避免解析出奇怪的内容破坏HTML结构。
- 把CSS都改成内联样式(比如
检查组织级的邮件设置
进Salesforce的Setup,搜「Deliverability」(邮件可送达性),确认「Access to Send Email」是「All email」,没有限制HTML邮件的发送。另外,看看「Email Security Settings」里有没有开启会转换HTML为纯文本的规则,有的话暂时关掉试试。
先从前面两个简单的步骤查起,大概率能解决问题,如果还不行,再一步步排查后面的点。
内容的提问来源于stack exchange,提问作者j brahma

