如何不发布模板文件修改Laravel 8 Notification邮件落款问候语
不发布Blade模板修改Laravel通知邮件落款方法
问题场景
目标为修改通知类toMail方法生成邮件底部的regards, {应用名称}默认落款;仅修改该部分内容就执行vendor:publish发布模板文件属于冗余操作,Laravel自带的常规邮件内容调整函数未覆盖该落款区域,默认内容无法通过常规API修改。
实现方案
不需要发布、修改任何vendor目录下的Blade模板文件,直接调用Laravel通知系统原生API即可完成修改,适配两种使用场景:
- 单通知维度自定义落款
在对应通知类的toMail方法中,给返回的MailMessage实例链式调用salutation()方法,传入自定义落款内容即可,示例代码:
如果需要完全移除落款区域,直接给public function toMail($notifiable) { return (new MailMessage) ->subject('通知标题') ->line('通知正文内容') ->action('操作按钮', route('对应业务路由')) // 传入的内容会直接替换默认的「regards + 应用名」落款 ->salutation('Regards, 自定义落款文本'); }salutation()传入空字符串即可。 - 全局维度统一落款
若需要所有通知邮件统一使用相同自定义落款,不需要在每个通知类重复配置,直接在app/Providers/AppServiceProvider.php的boot方法中注册全局宏即可:// 文件头部提前引入MailMessage类 use Illuminate\Notifications\Messages\MailMessage; public function boot() { // 全局设置所有通知邮件的默认落款 MailMessage::macro('build', function () { $this->salutation('Regards, 全局统一落款内容'); return $this; }); }
补充说明:
salutation为Laravel 5.4及以上版本自带的原生方法,覆盖所有主流现行Laravel版本,无需额外安装扩展包- 如果仅需要修改落款中显示的应用名称,不需要编写额外代码,直接修改
.env文件中的APP_NAME配置值即可,默认落款会自动读取该配置项渲染
内容的提问来源于stack exchange,提问作者Duschi
相关产品推荐
相关产品推荐

