在HTML输入字段中允许空格和换行符?

时间:2012-10-02 14:35:12

标签: html email formatting

在我们的内部CRM中,我们有一个简单的html输入textarea,您可以在其中留下注释和消息。我们稍后使用此信息通过电子邮件发送此信息,因为该电子邮件是HTML格式,因此格式化完全错误。

因此,例如,如果我在MYSQL表中有以下内容:

This is a test message!

Some line
Some more lines

如果我们稍后通过电子邮件发送,则会显示为:

This is a test message! Some line Some more lines

这显然不是必需的,但我不想在我们的CRM中添加一些复杂的WYSIWYG编辑器。我可以允许换行吗?如果是这样,怎么样?

我不想使用<pre></pre>代码,因为我认为所有电子邮件客户端都不支持它(我可能错了)。

5 个答案:

答案 0 :(得分:2)

如果您不打算在邮件中使用任何HTML标记,则可以使用text/plain标头。 (这意味着没有颜色,没有链接,也没有文字格式。)

您还可以制作快速而肮脏的解决方案,将文字中的所有\n替换为<br>\n

答案 1 :(得分:2)

问题是html将所有空格渲染为单个空格。如果您在收到电子邮件后查看电子邮件的来源,我会打赌换行符会在那里(如果不是,则问题出在电子邮件生成方面)。

我认为,

<pre></pre>是你能做的最简单的事情。

答案 2 :(得分:1)

基本解决方案是用<br>替换新行。

更聪明的人会特别考虑多个换行符(例如将/\n\s*\n/视为结束段落并开始新段落(</p><p>))。

具体细节取决于您用于从MySQL数据生成电子邮件的语言。您可能想要考虑Markdown解析器之类的东西。

答案 3 :(得分:0)

您可以发送两种形式的电子邮件:html和纯文本。在Html中,不处理换行符(就像在浏览器中一样)。看起来这就是你在这里做的事情。

两种解决方案:要么以纯文本形式发送电子邮件,要么将换行符更改为&lt; br&gt;。

答案 4 :(得分:0)

假设PHP处于混合状态,那么就是nl2br()函数。否则,自己动手并不难。

这个问题的根源在于浏览器(邮件客户端可以使用嵌入式浏览器进行渲染 - 例如Outlook - 或者像浏览器一样)将在HTML中标记之外占用任何数量的空白/新行/回车/等并将它们渲染为单个空格。这样你可以做一些事情,例如缩进你的标记,并使它在浏览器中看起来很清晰。

您必须插入标记才能按照建议控制渲染:将换行符转换为<br><p>标记等等,就像cms WYSIWYG编辑器那样。或者为您的电子邮件选择不同的格式。