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

HTML邮件中嵌入PHP代码无数据显示问题求助

解决HTML邮件中PHP代码不执行的问题

你当前的写法是把PHP代码直接嵌入到$message字符串里,这些代码不会被服务器执行——邮件发送时,服务器只会把这段PHP代码当成普通文本(或者被HTML解析器忽略),自然不会显示数据库查询的结果。要让邮件显示数据库数据,得先执行PHP逻辑拿到数据,再把数据渲染成HTML内容。

修改后的代码示例

<?php
try{
    $to = "info@info.co.za";
    $headers[] = 'MIME-Version: 1.0';
    $headers[] = 'Content-type: text/html; charset=iso-8859-1';

    // 先执行数据库查询,拿到数据
    include_once "database.php";
    $result = mysqli_query($conn,"SELECT id,upper(make) FROM makes order by upper(make)");

    // 开始构建邮件的HTML内容
    $message = '<html><head>';
    // 注意:邮件客户端大多不支持外部CSS文件,建议把样式写内联或内部<style>
    $message .= '<style>
        tr:nth-of-type(odd) {
            background-color:#ccc;
        }
    </style>';
    $message .= '<title>Delete employee data</title></head><body>';
    $message .= '<table>';

    // 循环渲染数据库数据到表格
    $i=0;
    while($row = mysqli_fetch_array($result)) {
        $message .= '<tr>';
        $message .= '<td style="width: 300px; text-align: center;">' . $row["upper(make)"] . '</td>';
        $message .= '</tr>';
        $i++;
    }

    $message .= '</table></body></html>';

    $response = mail($to, 'Query from website', $message, implode("\n",$headers));
    print_r($response); 
} catch(Exception $e){
    print_r($e);
}
?>

关键改动说明

  • 把数据库查询逻辑从$message字符串中移出来,提前执行并拿到数据
  • 循环遍历查询结果,把每一行数据直接拼接到HTML表格的代码中
  • 移除了外部CSS链接(邮件客户端基本不会加载外部样式文件),保留内部<style>样式(部分客户端支持,如需更好兼容性建议把样式内联到每个HTML标签)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:43:11