如何获取 Mandrill/Mailchimp 模板以在合并标签中保留换行符
Posted
技术标签:
【中文标题】如何获取 Mandrill/Mailchimp 模板以在合并标签中保留换行符【英文标题】:How to get a Mandrill/Mailchimp template to preserve line breaks in a merge tag 【发布时间】:2015-10-01 03:01:02 【问题描述】:我将 Djrill 与 mailchimp 模板一起使用。
我使用下面的这个 sn-p 将 merge_vars 推送到我的模板中:
msg.global_merge_vars =
SNAME': fullname, 'SEMAIL': from_email,'SMESSAGE': message
消息 |SMESSAGE| 出现在电子邮件中,但没有保留换行符。我将如何在我的消息中保留换行符?
另外请不要使用 % autoescape on % 方法,因为模板是从 mailchimp 发送的
【问题讨论】:
Djrill 将 merge_vars 直接传递给 Mandrill,因此您真正要问的是如何获取 Mandrill/Mailchimp 模板以保留合并标记中的换行符。几个月前有人asked that,没有答案。您可以在模板中尝试<pre>*|SMESSAGE|*</pre>
之类的东西,或者您可以在Django 代码中使用<br>
将消息编码为html,然后在模板中使用*|HTML:SMESSAGE|*
(但要注意脚本注入!)。
我添加了 .replace('\r\n',r).replace('\n\r',r).replace('\r',r).replace('\ n',r) 到我的 form.cleaned_data ,它似乎只需要声明 |SMESSAGE|
【参考方案1】:
好的,这对我有用,我在清理后的消息上做了一个 str 替换
r = '<br />'
message = form.cleaned_data['message'].replace('\r\n',r).replace('\n\r',r).replace('\r',r).replace('\n',r)
然后以同样的方式合并它
msg.global_merge_vars =
SNAME': fullname, 'SEMAIL': from_email,'SMESSAGE': message
并在我的 mailchimp 模板中声明它
<p> *|SMESSAGE|* </p>
【讨论】:
每当您生成 html 时,转义用户输入中的任何 html 都很重要。 Django 有一个可以使用的escape function。 (由于您的 html 将进入电子邮件,script injection 可能不是一个巨大 问题,但最好是安全的。另外,如果用户在消息。) 我想我也必须使用*|HTML:MESSAGE|*
。以上是关于如何获取 Mandrill/Mailchimp 模板以在合并标签中保留换行符的主要内容,如果未能解决你的问题,请参考以下文章
Mandrill Mailchimp 如何在电子邮件正文中嵌入图像
iOS 9 与第三方 Mandrill/MailChimp 深度链接