Mandrill忽略换行符(\n)

Axe*_*ect 5 mandrill

使用该send-template方法和Lutung Mandrill Java API实现,当模板变量包含表单的换行符时\n,它们将在生成的电子邮件中被完全忽略或删除.String包含\n字符的s 保持不变,直到GET send-template执行该方法.所以我猜String在Mandrill服务器上有一些分析和转换可以删除特殊字符.

如何在Mandrill电子邮件中重新开始工作?

Amr*_*rhy 6

就我而言,我使用 Handlebars 作为山魈模板,我通过将 HTML 发送到模板<br/>而不是用类似以下内容的字符串\n替换来解决这个问题:\n<br/>.Description.Replace("\n", "<br/>");

然后在 mandrill 模板上,我将变量放在 {{{ variable }}} 而不是 {{ variable }} 内

http://blog.mandrill.com/handlebars-for-templates-and-dynamic-content.html

HTML 转义

Handlebars HTML 转义 {{expression}}. 如果您不希望 Handlebars 转义某个值,请使用“triple-stash”、“{{{.

在您的模板中:

<div> {{{html_tag_content}}} </div>在您的 API 请求中:

   "global_merge_vars": [   {
      "name": "html_tag_content",
      "content": "This example<br>is all about<br>the magical world of handlebars"   } ]
Run Code Online (Sandbox Code Playgroud)

结果:

这个例子
是关于
车把的神奇世界


gui*_*val -1

如果你想发送更复杂的内容,无论是html,还是带有换行符的变量等等,你可以先渲染模板然后发送消息,而不是直接使用send-template.

通过调用来渲染模板templates.render

{
    "key": "example key",
    "template_name": "Example Template",
    "template_content": [
        {
            "name": "editable",
            "content": "<div>content to inject *|MERGE1|*</div>"
        }
    ],
    "merge_vars": [
        {
            "name": "merge1",
            "content": "merge1 content\n contains line breaks"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

将结果保存到变量中rendered_content

使用渲染模板发送消息messages.send

{
    "message": {
        "html": rendered_content,
        ...
    ...
}
Run Code Online (Sandbox Code Playgroud)