1

在我们的内部 CRM 中,我们有一个简单的 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>标签,因为我相信并非所有电子邮件客户端都支持它(我可能是错的)。

4

5 回答 5

2

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

您还可以制定一个快速而肮脏的解决方案,\n将文本中的所有 s 替换为<br>\n.

于 2012-10-02T14:37:56.087 回答
2

问题是 html 将所有空格呈现为单个空格。如果您在收到电子邮件后查看其来源,我敢打赌会有换行符(如果没有,那么问题出在电子邮件生成方面)。

<pre></pre>我认为这是你能做的最简单的事情。

于 2012-10-02T14:38:39.027 回答
1

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

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

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

于 2012-10-02T14:37:47.137 回答
0

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

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

于 2012-10-02T14:39:54.060 回答
0

假设 PHP 在混合中,则有 nl2br() 函数。否则,自己滚动并不难。

这个问题的根源是浏览器(邮件客户端可以使用嵌入式浏览器进行渲染 - 例如 Outlook - 或表现得像浏览器)将在 HTML 中的标签之外获取任意数量的空格/换行符/回车符/等并渲染它们作为单个空格。这样你就可以做一些事情,比如缩进你的标记,并且仍然让它在浏览器中看起来很正常。

您必须插入标记以控制渲染,正如建议的那样:将换行符转换为<br><p>标记等,就像 cms WYSIWYG 编辑器所做的那样。要么为您的电子邮件选择不同的格式。

于 2012-10-02T15:13:51.283 回答