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

Drupal 10 Webform邮件HTML格式异常求助(Hostinger生产环境)

排查步骤与解决方案

1. 核对邮件格式核心配置

  • 检查目标Webform的邮件设置:进入对应Webform的「邮件配置」面板,确认邮件格式选项已选中「HTML」而非「纯文本」。本地开发环境可能默认保留HTML配置,但生产环境部署时可能因配置重置或同步遗漏导致选项被修改。
  • 检查SMTP插件全局设置:打开SMTP Authentication Support的配置页面,确认未开启「强制纯文本邮件」类选项,部分主机环境的插件配置会被服务器默认规则覆盖。

2. 处理模板缓存与文件问题

  • 清除Drupal全缓存:执行drush cr命令(有权限的话),或在后台「配置」>「性能」中手动清除所有缓存。生产环境默认开启缓存,可能导致旧的纯文本模板缓存未更新,无法加载自定义HTML模板。
  • 确认自定义Twig模板的有效性:检查模板文件是否已正确上传至生产环境的modules/custom/[你的Webform模块]/templates或themes/[你的主题]/templates/webform目录,且文件权限设置为服务器可读(通常为644)。

3. 排查Hostinger服务器层面限制

  • 联系Hostinger技术支持:确认服务器是否存在HTML邮件自动转义或过滤规则,部分共享主机为防范垃圾邮件,会默认将HTML内容转义为纯文本格式。
  • 进行基础HTML邮件测试:绕过Webform,用SMTP插件直接发送一封包含简单HTML标签(如<h1>``<table>)的测试邮件,验证是否能正常渲染。如果测试邮件同样显示原始代码,说明问题出在SMTP配置或服务器规则,而非Webform模板。

4. 检查邮件头Content-Type设置

  • 查看邮件原始内容:接收生产环境发送的邮件后,查看邮件的「原始数据」,确认Content-Type字段是否为text/html; charset=utf-8。如果显示为text/plain,说明邮件格式被强制修改。
  • 用hook强制设置邮件头:在自定义模块中实现hook_mail_alter,强制指定Webform邮件的Content-Type,示例代码:
function custom_module_mail_alter(&$message) {
  if (strpos($message['id'], 'webform') !== FALSE) {
    $message['headers']['Content-Type'] = 'text/html; charset=utf-8';
  }
}

5. 验证模板语法与环境一致性

  • 核对PHP/Twig版本:确认本地与生产环境的PHP版本(Drupal 10要求PHP 8.1及以上)、Twig版本一致,版本差异可能导致模板渲染逻辑异常,最终输出原始HTML代码。
  • 检查HTML标签完整性:确认自定义Twig模板中的HTML标签均已正确闭合,生产环境的渲染规则更严格,未闭合标签可能导致模板解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:02:35