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

PHP发送订单通知邮件时$_SESSION["cart"]数组无法显示问题

问题原因

$_SESSION["cart"]内容无法正常显示,核心是三个问题:

  • 购物车数组一般是多维结构(每个商品包含名称、数量、价格等多个字段),直接用implode("<br>", $_SESSION["cart"])处理多维数组时,只会输出Array占位符,无法读取实际内容。
  • implode只能拼接简单的换行文本,无法生成你需要的表格展示效果。
  • 若未开启PHPMailer的HTML模式,所有HTML标签都不会被渲染,会直接以源码形式显示。
实现代码

首先确保开启PHPMailer的HTML支持,再遍历购物车数组拼接HTML表格,最后嵌入邮件正文即可,表格全部用内联样式保证所有邮件客户端都能正常显示:

// 拼接购物车商品表格
$cartContent = '<table style="width: 100%;border-collapse: collapse;margin: 16px 0;">
<thead>
  <tr style="background: #f3f4f6;">
    <th style="border:1px solid #e5e7eb;padding:8px;text-align:left;">商品名称</th>
    <th style="border:1px solid #e5e7eb;padding:8px;text-align:center;">购买数量</th>
    <th style="border:1px solid #e5e7eb;padding:8px;text-align:right;">单价</th>
  </tr>
</thead>
<tbody>';
foreach ($_SESSION["cart"] as $goods) {
  // 如果你的购物车是仅存商品名的一维数组,把下面$goods对应的键名直接换成$goods即可
  $cartContent .= '<tr>
    <td style="border:1px solid #e5e7eb;padding:8px;">'.htmlspecialchars($goods['name']).'</td>
    <td style="border:1px solid #e5e7eb;padding:8px;text-align:center;">'.intval($goods['num']).'</td>
    <td style="border:1px solid #e5e7eb;padding:8px;text-align:right;">'.number_format($goods['price'],2).'元</td>
  </tr>';
}
$cartContent .= '</tbody></table>';

// 组装邮件
$mail->Subject = 'ORDER NOTICE';
$mail->isHTML(true); // 必须开启,否则HTML格式不生效
$mail->Body = '<p>
Dear '.$dn.',<br>
An Order has been made on '.$date.' to be delivered to this address: '.$da.'<br>
Please expect your order within 2 days.<br>
Please note that this order is Pay on delivery.<br>
These are the Items to be delivered:
</p>'.$cartContent;
注意事项
  • 动态插入HTML的变量建议用htmlspecialchars()转义,避免特殊字符打乱HTML结构导致显示异常。
  • 邮件内的样式必须写内联样式,不要用外部CSS、类选择器,多数邮件客户端不支持非内联的样式定义。
  • 如果$_SESSION["cart"]是一维数组(仅存储商品名称字符串),可以删掉表格里多余的数量、单价列,遍历时直接输出$goods即可。
  • 发送前可以先把$cartContent打印到本地页面确认表格结构正常,再调邮件发送接口,排查问题更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.22 16:12:27