2015-07-12 24 views
1

我正在使用Djrill和mailchimp模板一起使用。如何獲得Mandrill/Mailchimp模板以保留合併標記中的換行符

我用下面這個片段到merge_vars推到我的模板:

msg.global_merge_vars = { 
SNAME': fullname, 'SEMAIL': from_email,'SMESSAGE': message 
      } 

消息| SMESSAGE |出現在電子郵件中,但不保留換行符。我將如何去保持我的消息斷行?

也請不我不能使用{上%% autoescape}方法的模板是從mailchimp

+0

Djrill將merge_vars直接傳遞給Mandrill,所以您真正要問的是如何獲取Mandrill/Mailchimp模板以保留合併標籤中的換行符。有人[問](幾個月前,(http://stackoverflow.com/questions/29826425/mandrill-ignores-line-breaks-n),沒有答案。你可以在你的模板中嘗試'

*|SMESSAGE|*
',或者你可以在你的Django代碼中用'
'的代碼將消息編碼爲html,然後在模板中使用'* | HTML:SMESSAGE | *'(但要注意腳本注入!)。 – medmunds

+0

我將.replace('\ r \ n',r).replace('\ n \ r',r).replace('\ r',r).replace('\ n',r)添加到我的form.cleaned_data,它似乎工作只是聲明* | SMESSAGE | * – vvdect

回答

0

好這個工作對我派,我做了海峽替換我的清潔消息

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> 
+0

每當你生成的HTML,重要的是轉義任何HTML在用戶的輸入。 Django有一個[escape函數](https://docs.djangoproject.com/en/1.8/ref/utils/#django.utils.html.escape)可以使用。 (由於你的html正在進入電子郵件,[腳本注入](https://en.wikipedia.org/wiki/Code_injection#HTML_script_injection)可能不是一個巨大的問題,但它很安全。 &,< or >如果用戶在消息中輸入它們,則工作。) – medmunds

相關問題