如何在PHP mail函数发送的HTML邮件中实现换行?
解决PHP mail发送邮件时换行失效的问题
问题原因
你设置了邮件内容类型为text/html,HTML解析器会忽略普通换行符(\n/\r\n),将其视为空白字符,导致原本的多行内容合并成一行显示。
解决方案
方案1:将换行转换为HTML换行标签
使用PHP内置函数nl2br(),自动把字符串中的换行符替换成HTML的<br>标签,让邮件客户端正确解析换行:
$header .= "MIME-Version: 1.0\r\n"; $header .= "Content-type:text/html;charset=UTF-8\r\n"; $msg = nl2br("My name is John. I am a boy. I am so in so"); mail('to@user', 'Subject', $msg, $header);
如果字符串包含<、>这类HTML特殊字符,建议先转义再处理,避免破坏HTML结构:
$msg = nl2br(htmlspecialchars("Your Multiline String"));
方案2:改用纯文本格式发送邮件
若无需HTML格式,可将Content-type改为text/plain,邮件客户端会按纯文本规则解析换行,直接保留原字符串的换行:
$header .= "MIME-Version: 1.0\r\n"; $header .= "Content-type:text/plain;charset=UTF-8\r\n"; $msg = "My name is John. I am a boy. I am so in so"; mail('to@user', 'Subject', $msg, $header);
内容的提问来源于stack exchange,提问作者be MrZulf
相关产品推荐
相关产品推荐

