我正在处理邮件功能,并且在格式化方面存在问题。 我想以HTML格式发送邮件。换行符应转换为换行符。目前我正在使用这些功能
$mail_filtered = nl2br($mail_filtered);
$mail_filtered = htmlspecialchars($mail_filtered);
如果我使用此功能,则正确显示变音符号,但换行符在邮件中显示为<br/>
标记。
邮件标题如下所示:
"Content-Type: text/html", "Charset=utf-8"
我做错了什么?
答案 0 :(得分:1)
如果您使用nl2br
向“实际”换行符序列添加HTML换行符并在之后应用htmlspecialchars
,那么您还要将添加的<br />
转换为<br />
然后显示为<br />
:
$str = "foo\nbar>baz";
var_dump(nl2br($str) === "foo<br />\nbar>baz"); // bool(true)
var_dump(htmlspecialchars(nl2br($str)) === "foo<br />\nbar>baz"); // bool(true)
反之亦然,首先使用htmlspecialchars
而不是nl2br
:
var_dump(nl2br(htmlspecialchars($str)) === "foo<br />\nbar>baz"); // bool(true)