SalesForce自定义JavaScript按钮:CEM换行与逗号失效问题求助
解决Salesforce自定义JS按钮中CEM的换行与逗号失效问题
我之前在配置Salesforce自定义JavaScript按钮时,也踩过CEM(自定义邮件消息)换行和特殊字符失效的坑!直接用\n、\r这类转义字符经常不生效,逗号也偶尔会出问题。下面是我亲测有效的几种解决方案,你可以按需尝试:
方法1:使用HTML换行符<br>(适用于HTML格式邮件)
如果你的邮件支持HTML格式,直接把换行替换成<br>是最稳妥的方式,逗号也能正常显示:
// 构建邮件内容 var emailContent = "您好,这是第一行内容<br>" + "这是第二行换行后的内容<br>" + "这里的逗号, 可以正常显示哦"; // 确保邮件设置为HTML格式 var email = new sforce.SingleEmailMessage(); email.setHtmlBody(emailContent); // 或者针对CEM字段赋值时直接传入带<br>的内容
注意:如果CEM默认是纯文本格式,需要在按钮代码中显式设置邮件的ContentType为"text/html",否则<br>会被当作普通文本显示。
方法2:使用Unicode转义字符
有时候直接用\n会被Salesforce的代码解析逻辑转义掉,改用Unicode转义序列反而能生效:
- 换行用
\u000A(对应换行符LF) - 逗号用
\u002C(防止特殊场景下逗号被截断)
示例代码:
var emailContent = "第一行内容\u000A" + "第二行内容\u000A" + "测试逗号\u002C 正常显示";
这种方式适用于纯文本格式的CEM,不需要切换到HTML模式。
方法3:使用ES6模板字符串(简化写法)
如果你的Salesforce环境支持ES6语法(现在大多数Org都支持了),可以直接用反引号包裹内容,在代码里直接换行写,逗号也能正常保留:
var emailContent = `第一行内容 第二行换行后的内容 这里的逗号, 完全没问题`;
这种写法更直观,避免了拼接字符串的麻烦,不过要注意如果是在按钮的静态资源中编写,要确保代码的换行符被正确解析。
额外注意事项
- 检查代码中是否使用了
escape()或类似的转义函数,这类函数会把换行符转成%0A,导致CEM无法识别,需要调整转义逻辑,或者用unescape()还原内容后再赋值。 - 确认CEM对应的字段类型:如果是文本字段,只能用纯文本换行符(
\u000A或\n);如果是富文本字段,HTML格式的换行和字符会更兼容。
内容的提问来源于stack exchange,提问作者Ebi
相关产品推荐
相关产品推荐

