PHP邮件需设Content-Type为text/html并配合MIME-Version头才能显示HTML格式;应避免现代CSS、优先内联样式、用表格布局;需兼顾纯文本降级与多端兼容性测试。

PHP默认用mail()函数发送的是纯文本邮件,内容不支持HTML格式,所以看起来“没格式”。要让邮件带加粗、颜色、链接、图片等效果,必须明确告诉邮件客户端:这是一封HTML邮件。
关键:设置正确的邮件头
只在邮件正文里写<b>加粗</b>没用,必须配合以下两个核心头信息:
-
Content-Type:声明为
text/html; charset=UTF-8 -
MIME-Version:通常设为
1.0
示例代码片段:
$headers = "MIME-Version: 1.0\r\n";$headers .= "Content-Type: text/html; charset=UTF-8\r\n";
mail("user@example.com", "欢迎邮件", "<h2>您好!</h2><p>这是<strong>HTML格式</strong>的邮件。</p>", $headers);
AI生成HTML内容时注意兼容性
AI(如你正在用的这个助手)可以帮你生成语义清晰、结构合理的HTML片段,但发邮件不是网页渲染——要避开现代CSS特性:
立即学习“PHP免费学习笔记(深入)”;
- 不用
flex、grid、@media等响应式布局(多数邮箱客户端不支持) - 内联样式优先:比如
<p style="color:#333; font-size:14px;">,别用外部CSS或<style>块 - 表格布局仍最稳妥:老式邮箱(如Outlook桌面版)对
<table>兼容性最好
别漏掉基础结构和可读性降级
专业邮件会同时提供HTML和纯文本双版本(multipart/alternative),但小项目中可简化:至少保证HTML邮件里有清晰语义,并在顶部或底部加一句纯文本说明,以防客户端禁用HTML:
- 开头加简短提示:“本邮件包含HTML格式,请确保已启用HTML查看”
- 重要链接旁附上可复制的URL(如:
点击访问:https://xxx) - 避免仅靠颜色传递关键信息(色弱用户可能看不到),搭配文字或图标
测试真比写代码还重要
Gmail、Apple Mail、Outlook网页版表现各不相同。发测试邮件前建议:
- 用工具预览:如Putsmail或Email on Acid
- 真机收件测试:尤其检查iOS邮件App和安卓Gmail App的换行、字体、图片加载
- 禁用图片后是否仍可读?把
<img>加上alt属性,宽度高度写死



















