如何在Laravel Mail中设置默认全局CC/BCC地址
邮件自动追加全局CC/BCC实现方案
1. 新增配置项
首先在你的应用邮件配置文件(例:config/mail.php)中添加全局抄送、密送的地址配置:
return [ // 原有其他邮件配置 'global_cc' => [ 'ops@example.com' => 'Operation Team', 'manager@example.com' => 'Project Manager', ], 'global_bcc' => [ 'audit@example.com' => 'Audit Department', ], ];
2. 注入全局发送逻辑
核心实现思路是通过邮件发送前置钩子,自动读取配置注入CC/BCC,无需业务代码手动调用对应方法,不同场景实现方式如下:
Laravel框架实现
- 生成邮件发送事件监听器:
执行命令:php artisan make:listener AppendGlobalMailRecipients - 编写监听器逻辑:
打开app/Listeners/AppendGlobalMailRecipients.php,修改handle方法:use Illuminate\Mail\Events\MessageSending; public function handle(MessageSending $event) { // 注入全局抄送 foreach (config('mail.global_cc', []) as $address => $name) { $event->message->addCc( is_int($address) ? $name : $address, is_int($address) ? null : $name ); } // 注入全局密送 foreach (config('mail.global_bcc', []) as $address => $name) { $event->message->addBcc( is_int($address) ? $name : $address, is_int($address) ? null : $name ); } } - 注册监听器:
打开app/Providers/EventServiceProvider.php,在$listen数组中添加事件绑定:protected $listen = [ MessageSending::class => [ AppendGlobalMailRecipients::class, ], ];
其他框架/原生SwiftMailer实现
- 找到邮件类的发送前置回调/钩子方法,在发送前读取配置,调用对应库的addCc、addBcc方法注入地址即可
- 原生SwiftMailer可直接注册
Swift_Events_SendListener插件,在beforeSendPerformed方法中完成上述逻辑
3. 验证与扩展
- 配置完成后所有发送的邮件会自动追加全局CC/BCC,和业务代码手动添加的收件人自动合并,不会覆盖
- 如果有特殊邮件不需要全局抄送/密送,可在监听器中添加判断规则,比如根据邮件类名、自定义标识字段跳过注入逻辑
内容的提问来源于stack exchange,提问作者Paolo Uriel N. Enriquez
相关产品推荐
相关产品推荐

