2012-10-02 115 views
1

在我們的內部CRM中,我們有一個簡單的html輸入textarea,您可以在其中留下筆記和消息。我們稍後使用這些信息來發送電子郵件,只是因爲該電子郵件是HTML格式,所有格式都是錯誤的。允許HTML輸入字段中的空白和換行符?

所以,舉例來說,如果我已經在我的MySQL表如下:

This is a test message! 

Some line 
Some more lines 

如果我們稍後通過電子郵件發送這個弄出來的:

This is a test message! Some line Some more lines 

這顯然是不想要的,但我不我想添加一些複雜的所見即所得的編輯器到我們的CRM。我可以允許換行嗎?如果是這樣,怎麼樣?

我不想使用<pre></pre>標記,因爲我相信它在所有電子郵件客戶端中都不受支持(我可能是錯的)。

+1

如果您的電子郵件地址爲HTML,則必須用'
'替換換行符('\ n')。 – bfavaretto

回答

2

如果您不打算在郵件中使用任何HTML標籤,則可以使用text/plain標頭。 (這將意味着沒有顏色,沒有鏈接,沒有文本格式)。

你也可以做一個快速和骯髒的解決方案,以取代所有\n在你的文字<br>\n

+0

我們使用HTML部分:)。但是'\ n'的'str_replace'會起作用嗎? – Linkjuice57

+1

@ Linkjuice57:是的,會的。 –

+1

@ Linkjuice57我知道這是一個較老的問題,你可能已經用'str_replace'手動替換'\ n',但是如果你使用PHP,你可以使用'nl2br'函數。 – Nathan

1

一個基本的解決方案是用<br>代替新行。

更聰明的人會特別考慮到多個換行(例如治療/\n\s*\n/作爲點來結束一個段落,並開始一個新的(</p><p>))。

具體取決於您用來從MySQL數據生成電子郵件的語言。您可能需要考慮類似Markdown解析器的內容。

2

問題是,html呈現所有空格作爲單個空格。如果您在收到郵件後查看郵件的來源,我會打賭換行符會在那裏(如果它們不是,那麼問題出在郵件生成端)。

<pre></pre>是你可以做的最簡單的事情,我想。

0

您可以發送兩種風格的電子郵件:html和純文本。在Html中,換行符不會被處理(就像在瀏覽器中一樣)。看起來這是你在這裏做的。

兩種解決方法:要麼以純文本形式發送電子郵件,要麼將換行符更改爲<br>。

0

假設PHP在混合中,有nl2br()函數。否則,滾動你自己並不難。

此問題的根源在於瀏覽器(郵件客戶端可以使用嵌入式瀏覽器進行渲染 - 例如Outlook - 或者像瀏覽器一樣)會在標籤之外採用任意數量的空白/新行/回車/等HTML並將它們呈現爲單個空白。這樣您就可以執行縮進標記等操作,並且仍然可以在瀏覽器中使用它。

您必須插入標記才能控制渲染,如已經建議的那樣:將換行符轉換爲<br><p>標記等等,就像cms所見即所得的編輯器一樣。或者爲您的電子郵件選擇不同的格式。

相關問題