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

Laravel 11动态设置SMTP发件人(Gmail环境异常解决)

动态设置Laravel 11邮件发件人及Gmail环境问题解决

一、实现动态发件人设置

要让邮件使用当前登录用户的邮箱作为发件人,需修改Mailable类,让它接收并应用发件人信息:

1. 更新TicketIssueEmail Mailable类

添加发件人邮箱和名称的私有属性,在构造函数中接收参数,并在envelope()方法里指定发件人:

namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use Illuminate\Mail\Mailables\Address; // 引入Address类

class TicketIssueEmail extends Mailable
{
    use Queueable, SerializesModels;
    public $msg;
    public $sub;
    private $fromEmail;
    private $fromName;

    // 构造函数新增发件人参数
    public function __construct($msg, $subject, $fromEmail, $fromName)
    {
        $this->msg = $msg;
        $this->sub = $subject;
        $this->fromEmail = $fromEmail;
        $this->fromName = $fromName;
    }

    public function envelope(): Envelope
    {
        return new Envelope(
            subject: $this->sub,
            // 设置动态发件人
            from: new Address($this->fromEmail, $this->fromName)
        );
    }

    public function content(): Content
    {
        return new Content(view: 'backend.customer.pages.email');
    }

    public function attachments(): array
    {
        return [];
    }
}

2. 修改控制器中的邮件发送逻辑

创建TicketIssueEmail实例时,传入已获取的当前用户邮箱和名称:

// 替换原有的Mail发送代码
Mail::to($to)->send(new TicketIssueEmail($msg, $subject, $from, $sender_name));

二、解决Gmail环境下发件人显示异常问题

问题原因

Gmail SMTP服务器对发件人地址有严格限制:

  • 若使用普通Gmail账户(非Workspace),未验证的发件人地址会被强制替换为SMTP登录账户的邮箱(即.env里MAIL_USERNAME对应的邮箱),这就是清空MAIL_FROM_ADDRESS后仍显示旧邮箱的原因。
  • Mailtrap无此类限制,所以能正常显示动态发件人。

解决步骤

  1. 验证发件人邮箱

    • 登录你SMTP配置中MAIL_USERNAME对应的Gmail账户
    • 进入「设置」→「账户和导入」→「发送邮件作为」
    • 点击「添加另一个电子邮件地址」,输入当前用户的邮箱和名称
    • 按照提示完成邮箱验证(接收验证邮件并点击确认链接)
    • 验证完成后,该邮箱就能作为合法发件人使用。
  2. 确保SMTP配置正确

    • 若你的Gmail账户开启了两步验证(2FA),必须使用应用专用密码作为MAIL_PASSWORD,不能用普通登录密码。
    • 若未开启2FA,需在Gmail账户设置中开启「允许不太安全的应用访问」(推荐优先开启2FA并使用应用密码,安全性更高)。

内容的提问来源于stack exchange,提问作者Shabnam Sabah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 02:50:15