You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

联系表单邮件布局问题求助:换行符\r\n失效导致内容单行显示

解决联系表单邮件换行失效的问题

嘿,这个问题我之前也踩过坑!原因其实很直白:你在邮件头里把内容类型设置成了text/html,但HTML是不认\r\n这种纯文本换行符的——浏览器会把这些换行当成普通空白字符直接忽略,所以所有内容就挤在一行显示了。

给你两种实用的解决方案:

方案一:改用纯文本格式邮件

如果你不需要邮件有HTML样式,直接把邮件内容类型改成纯文本就行,这样\r\n就能正常生效实现换行:

$headers = 'MIME-Version: 1.0' . "\r\n";
// 将text/html替换为text/plain
$headers .= 'Content-type: text/plain; charset=utf-8' . "\r\n";
$headers .= 'From: '.$mailFrom."\r\n";
$headers .= 'Reply-To: '.$mailFrom."\r\n";

方案二:保留HTML格式,替换换行符为HTML标签

如果想要保留HTML格式(方便后续添加样式优化排版),就得把\r\n换成HTML的换行标签<br>。另外用户输入的消息里如果有换行,也可以用nl2br()函数自动转成<br>:

// 构建带标签的HTML格式邮件内容
$message = 'Vous avez reçu un email de <br>' . 
           'Nom : ' . htmlspecialchars($lastName) . '<br>' . 
           'Prénom : ' . htmlspecialchars($firstName) . '<br>' . 
           'Spécialité : ' . htmlspecialchars($speciality) . '<br>' . 
           'Adresse : ' . htmlspecialchars($adress) . '<br>' . 
           'Téléphone : ' . htmlspecialchars($phone) . '<br>' . 
           'Email : ' . htmlspecialchars($mailFrom) . '<br><br>' .
           'Message : <br>' . nl2br(htmlspecialchars($txt));

这里额外加了htmlspecialchars()是为了防止用户输入的内容包含恶意HTML标签,避免潜在的安全风险,算是个小提醒~

选其中一种方案修改后,再测试下邮件应该就能正常换行了!

内容的提问来源于stack exchange,提问作者nabuko81

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 22:48:11