Drupal 9邮件Bcc功能失效问题求助
修复Drupal邮件密送(Bcc)不生效问题
问题原因
你调用的是system模块的mail邮件键(\Drupal::service('plugin.manager.mail')->mail('system', 'mail', ...)),但你的mymodule_mail钩子只会在调用你的模块定义的邮件键时触发,所以当前设置的Bcc根本没被应用到实际发送的邮件上。
解决方案
方案1:使用hook_mail_alter修改邮件头部
既然要修改系统邮件的Bcc,直接用hook_mail_alter拦截并添加Bcc:
function mymodule_mail_alter(&$message) { // 只针对特定邮件场景修改,避免影响所有邮件 if ($message['id'] == 'system_mail' && !empty($message['params']['context']['Bcc'])) { $message['headers']['Bcc'] = $message['params']['context']['Bcc']; // 保留需要的其他头部设置 $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed; delsp=yes'; $message['from'] = \Drupal::config('system.site')->get('mail'); } }
方案2:自定义模块的邮件键(推荐)
更规范的做法是使用自己模块的邮件键,确保mymodule_mail能正常触发:
- 修改
notify_new_resources方法中的邮件调用,把模块名改为mymodule:
function notify_new_resources(EntityInterface $entity, $mode) { $langcode = \Drupal::currentUser()->getPreferredLangcode(); $params['context']['subject'] = t('A new resource has been created!'); $params['context']['message'] = 'A new resource has been created blah blah blah...'; $to = 'myaddress@somedomain.com'; $params['context']['Bcc'] = $s_recipients; // 确保$s_recipients是正确的邮箱列表,多个用逗号分隔 // 模块名改为mymodule,自定义邮件键为resource_notification \Drupal::service('plugin.manager.mail')->mail('mymodule', 'resource_notification', $to, $langcode, $params); }
- 调整
mymodule_mail钩子,匹配自定义的邮件键:
function mymodule_mail($key, &$message, $params) { // 只处理自定义的邮件键 if ($key == 'resource_notification') { $options = array( 'langcode' => $message['langcode'], ); $message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed; delsp=yes'; $message['from'] = \Drupal::config('system.site')->get('mail'); $message['headers']['Bcc'] = $params['context']['Bcc']; $message['subject'] = $params['context']['subject']; $message['body'][] = $params['context']['message']; } }
额外注意事项
- 确保
$s_recipients格式正确:单个邮箱字符串,或多个邮箱用逗号分隔(如'user1@example.com,user2@example.com') - 测试前可开启Drupal邮件日志(
/admin/config/system/mail-logging),查看实际发送的邮件头部是否包含Bcc
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

