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

网站联系表单提交后显示HTML标签及邮件样式失效问题求助

问题排查与解决方案

问题1:表单提交后页面显示原始HTML标签

原因分析:你的PHP脚本里设置了header('Content-Type: application/json');,但实际返回的是HTML格式的提示消息(比如Message Sent Successfully!),浏览器会把这些HTML内容当成JSON来解析,所以直接显示原始标签而非渲染后的内容。

解决方案:

  • 如果你的表单是普通同步提交(非AJAX异步提交),直接删除这行代码:
    header('Content-Type: application/json');
    
  • 如果是AJAX提交,需要把返回消息封装成JSON格式,比如:
    echo json_encode(['msg' => $msg]);
    exit;
    
    再在前端JS里解析JSON并渲染消息内容,不要直接输出HTML。

问题2:邮件仅显示纯文本,无法样式化展示

原因分析:

  1. 邮件模板inc/contact.php内容不完整(代码结尾截断为st),HTML结构未闭合,邮件客户端无法正确识别为HTML格式;
  2. 模板使用了外部CSS链接,大部分邮件客户端会阻止加载外部样式,导致样式失效;
  3. 变量替换时,用户输入的特殊字符(如<、>)会破坏HTML结构,未做转义处理。

解决方案:

  1. 修复模板完整性:
    补全inc/contact.php的HTML闭合标签,确保结构完整:

    </div>
    </div>
    </section>
    </div>
    </body>
    </html>
    
  2. 将外部CSS转为内联样式:
    邮件客户端对外部CSS支持极差,建议把所有样式直接写在元素的style属性里,比如:

    <h3 class="animate-intro" id="message" style="color: #333; font-size: 24px;"></h3>
    
  3. 安全转义用户输入:
    替换变量时用htmlspecialchars()转义内容,避免破坏HTML结构:

    $mail->Body = str_replace('$name', htmlspecialchars($name), $mail->Body);
    $mail->Body = str_replace('$email', htmlspecialchars($email), $mail->Body);
    $mail->Body = str_replace('$subject', htmlspecialchars($subject), $mail->Body);
    $mail->Body = str_replace('$message', htmlspecialchars($message), $mail->Body);
    
  4. 确认HTML发送设置:
    确保$mail->isHTML(true);未被注释,让PHPMailer以HTML格式发送邮件。


额外优化建议

  • 表单提交后,用header("Location: contact.php?msg=" . urlencode($msg));跳转到原页面,再在页面上渲染提示消息,避免直接输出内容导致的格式问题;
  • 对用户输入的邮箱地址做格式验证,提升邮件发送的成功率;
  • 测试邮件时可使用邮件预览工具,提前排查渲染问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:41:47