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

PHPMailer发送HTML邮件在Outlook等客户端显示空白问题求助

问题分析与解决方案

代码中的明显错误

首先你提供的代码里,HTML内容存在标签未闭合的问题:

$ms = "<html><head>.... some html ....</html";

这里的</html缺少闭合的>,导致HTML结构不完整,Outlook这类解析严格的邮件客户端会因无法识别完整结构而显示空白,这是核心问题之一。

修复步骤

  1. 修正HTML标签闭合
    把HTML内容的闭合标签补全:
$ms = "<html><head>.... some html ....</html>";
  1. 添加纯文本替代内容
    部分邮件客户端会优先显示纯文本内容(尤其是用户设置纯文本模式时),需要给PHPMailer显式设置纯文本替代体:
$mail->MsgHTML($ms);
// 自动去除HTML标签生成纯文本内容
$mail->AltBody = strip_tags($ms);
  1. 优化HTML邮件的Outlook兼容性
    Outlook对HTML/CSS的支持有诸多限制,结合你的邮件内容,需做这些调整:
  • 用表格布局替代div布局:Outlook依赖表格实现页面结构,div布局极易错乱或不显示
  • 所有样式使用内联CSS:避免使用<style>标签或外部样式表,Outlook多数版本不支持非内联样式
  • 图片必须设置明确的width、height属性,同时添加alt文本,防止图片加载失败时显示空白
  • 避免使用CSS浮动、定位、复杂margin/padding属性,改用表格单元格间距实现布局间距
  1. 确保PHPMailer为最新版本
    旧版本PHPMailer可能存在邮件头设置错误,导致客户端解析异常,建议更新到最新稳定版。

  2. 检查邮件头信息(可选)
    临时开启SMTPDebug查看发送细节,确认Content-Type是否正确设置为text/html; charset=utf-8:

$mail->SMTPDebug = 2; // 开启调试模式查看发送流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:50:27