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

Laravel控制器修改MAIL_FROM_NAME发送不同发件人邮件失败问题

问题分析与解决方案

你的实现方式存在问题,导致两封邮件发件人名称都显示为默认值,核心原因如下:

  • 全局修改Config::set('mail.from.name')后,在第二封邮件的闭包里立刻将配置改回默认值,此时第二封邮件的发件人信息尚未完成读取,配置被提前覆盖,最终使用了默认名称。
  • 第一封邮件未做自定义发件人设置,自然使用默认值;第二封邮件因配置被提前改回,也无法应用自定义名称。

正确解决方案

无需修改全局配置,直接在邮件消息的闭包中通过$message->from()方法单独设置每封邮件的发件人信息,这样可以保证每封邮件的发件人独立可控,不会互相干扰。

修改后的代码示例:

// 第一封邮件:使用.env中的默认发件人名称(无需额外设置)
Mail::send(
    'register.mail',
    ['record' => $record],
    function ($message) use ($record) {
        $message->to('usama@gmail.com');
        $message->subject('New Store Registration Request');
    }
);

// 第二封邮件:使用自定义发件人名称
Mail::send(
    'register.welcomeMail',
    ['record' => $record],
    function ($message) use ($record) {
        $message->to($record['email']);
        $message->subject('Store Registration');
        // 直接设置当前邮件的发件人,第一个参数用默认邮箱,第二个为自定义名称
        $message->from(env('MAIL_FROM_ADDRESS'), 'Custom name');
    }
);

补充说明

如果非要通过修改全局配置实现(不推荐,会影响其他邮件发送),必须确保邮件发送完成后再恢复默认配置,但这种方式在异步发送场景下依然存在配置提前被覆盖的风险,因此优先推荐直接在$message对象上设置发件人的方案。

内容的提问来源于stack exchange,提问作者Usama Jalal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:55:10