如何在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
相关产品推荐
相关产品推荐

