格式化电子邮件变音符号和换行符

时间:2011-07-17 14:38:53

标签: php email encoding

我正在处理邮件功能,并且在格式化方面存在问题。 我想以HTML格式发送邮件。换行符应转换为换行符。目前我正在使用这些功能

$mail_filtered    = nl2br($mail_filtered);
$mail_filtered    = htmlspecialchars($mail_filtered);

如果我使用此功能,则正确显示变音符号,但换行符在邮件中显示为<br/>标记。 邮件标题如下所示:

"Content-Type: text/html", "Charset=utf-8"

我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果您使用nl2br向“实际”换行符序列添加HTML换行符并在之后应用htmlspecialchars,那么您还要将添加的<br />转换为&lt;br /&gt;然后显示为<br />

$str = "foo\nbar>baz";
var_dump(nl2br($str) === "foo<br />\nbar>baz");  // bool(true)
var_dump(htmlspecialchars(nl2br($str)) === "foo&lt;br /&gt;\nbar&gt;baz");  // bool(true)

反之亦然,首先使用htmlspecialchars而不是nl2br

var_dump(nl2br(htmlspecialchars($str)) === "foo<br />\nbar&gt;baz");  // bool(true)