联系表单邮件布局问题求助:换行符\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
相关产品推荐
相关产品推荐

