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

如何在Drupal 8 Webform发送的邮件中添加优先级头等自定义头?

在Drupal 8 Webform邮件中添加优先级头的方法

嘿,我懂你——虽然邮件优先级头确实已经算是“过去式”的功能了,但如果你的场景里确实需要给Webform发送的邮件加上这些标记,完全是可以实现的,而且不用依赖远程POST,直接在Drupal里通过自定义模块的钩子就能搞定。

下面是具体的实现步骤:

方法:使用Webform专属钩子修改邮件头

Drupal 8的Webform模块提供了hook_webform_mail_alter钩子,专门用来修改表单发送的邮件内容和头信息。你只需要创建一个自定义模块(如果还没有的话),然后添加以下代码:

/**
 * Implements hook_webform_mail_alter().
 */
function your_custom_module_webform_mail_alter(array &$message, array $context) {
  // 可选:只针对特定的Webform生效,替换成你的表单ID
  $target_webform_id = 'contact_us_form';
  if ($context['webform']->id() === $target_webform_id) {
    // 添加你需要的优先级相关头信息
    $message['headers']['X-Priority'] = '1 (Highest)';
    $message['headers']['X-MSMail-Priority'] = 'High';
    $message['headers']['Importance'] = 'High';

    // 确保基础的MIME和内容类型头存在(如果Webform未自动设置的话)
    if (!isset($message['headers']['MIME-Version'])) {
      $message['headers']['MIME-Version'] = '1.0';
    }
    if (!isset($message['headers']['Content-Type'])) {
      $message['headers']['Content-Type'] = 'text/html; charset="iso-8859-1"';
    }
  }
}

代码说明:

  • 把your_custom_module替换成你实际的自定义模块名称
  • contact_us_form替换成你要修改的Webform的ID(可以在Webform的编辑页面找到)
  • 这段代码会在目标Webform发送邮件时,自动给邮件添加你需要的优先级头,和你提供的PHP原生写法效果一致

如果需要给所有Webform的邮件都加这些头,只需要去掉里面的if判断条件即可。

虽然现在很多主流邮件客户端不会特别强调这些优先级标记,但按照你的需求,这种方式完全符合Webform邮件发送的场景,不需要额外的远程请求。

内容的提问来源于stack exchange,提问作者B.Friddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:18:07