如何格式化通过php脚本发送的文本的电子邮件正文

如何格式化通过php脚本发送的文本的电子邮件正文,php,Php,您好,我有一个联系我们页面,其中我有一个文本区域用于描述,用户将在那里键入他/她的消息。我希望该邮件是发送在邮件正文,因为它是与所有的格式在它。我从php脚本中得到描述 $header = "Content-type: text/html\n"; $Description = $_REQUEST["txtDescription"]; mail($To, $Subject, $Description, $header); 我已经定义了$To、$Subject、$header。邮件进展顺利。我希望

您好,我有一个联系我们页面,其中我有一个文本区域用于描述,用户将在那里键入他/她的消息。我希望该邮件是发送在邮件正文,因为它是与所有的格式在它。我从php脚本中得到描述

$header = "Content-type: text/html\n";
$Description = $_REQUEST["txtDescription"];
mail($To, $Subject, $Description, $header);
我已经定义了$To、$Subject、$header。邮件进展顺利。我希望消息显示在邮件正文中,因为用户在文本区域键入了格式设置(如回车)

使用将新行字符转换为

标记

$Description = nl2br($_REQUEST["txtDescription"]);
此外,您还可以执行以下操作以保留多个空格

$Description = str_replace('  ', '  ', $Description);

您可以使用将换行符
\n
转换为

,然后以实际HTML格式发送电子邮件

$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

或者更好的方法是使用SwiftMailer或PHPMailer。它们比
mail()
函数好得多,我建议您使用它们从PHP脚本发送电子邮件。

如果您想保持格式,只需使用
纯文本
而不是
文本/html

或将信息包装在
pre
标记内:

mail($To, $Subject, "<pre>{$Description}</pre>", $header)
mail($To,$Subject,“{$Description},$header)

当content type设置为
text/html
时,客户端将尝试像浏览器一样呈现它。所以将应用与html中相同的规则:多个空格和回车符将被视为一个。因此,您需要使用暗示(默认情况下)保留格式的标记,例如
pre
标记。

为此,您应该用CKeditor替换textarea

从这里下载

此链接上的安装和配置详细信息


如果你同意使用TCPDF,那么就使用TCPDF

试试这个例子


那么,将换行符转换为HTML

标记就行了
nl2br($Description)
如何将换行符转换为HTML
标记?我可以同时保留纯文本和文本/HTML吗?因为我在里面附加了一些html标签。一封邮件可以是多部分的,所以你可以在同一封邮件中发送一个纯文本版本和一个文本/html,客户端将只选择一个版本来阅读。邮件的一部分必须只有一种内容类型。因此,如果您想在邮件中发送html标记并希望文本保持格式,您需要使用
,或者至少使用如下CSS属性:
..
(您可以在此处使用
span
或任何其他标记)不使用它有什么具体原因吗???@smankudhanuka:什么不起作用?在使用nl2br后尝试回显数据时会发生什么情况?$headers.=“内容类型:text/html;charset=ISO-8859-1\r\n”;不工作。