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

Laravel 10使用Mail facade添加邮件头遇方法未定义错误求助

解决Laravel邮件添加自定义头部(Message-ID等)的报错问题

问题原因

报错Call to undefined method Illuminate\Mail\Message::withSwiftMessage()是因为**Illuminate\Mail\Message类并没有withSwiftMessage这个方法**,你混淆了Laravel邮件API的用法。要操作底层的SwiftMailer对象,应该直接调用getSwiftMessage()方法。

修正后的代码

替换你代码中添加邮件头的部分,直接获取Swift邮件实例并操作头部:

Mail::mailer('user_stmp')->send('emails.reply', [
    'from' => $sender_email,
    'body' => $request->body,
], function ($m) use ($sender_email, $sender_name, $request,$reply) {
    $m->from($sender_email, $sender_name);
    $m->to($request->to_mail)->subject($request->subject);
    if ($request->cc)
    {
        $m->cc($request->cc);
    }
    if ($request->bcc)
    {
        $m->bcc($request->bcc);
    }

    // 直接获取底层Swift_Message实例
    $swiftMessage = $m->getSwiftMessage();
    $headers = $swiftMessage->getHeaders();
    
    // 添加需要的邮件头
    $headers->addTextHeader('Message-ID', $reply->message_id);
    $headers->addTextHeader('In-Reply-To', $reply->in_reply_to);
    $headers->addTextHeader('References', $reply->refs);
});

额外说明

  • getSwiftMessage()方法返回底层的Swift_Message对象,通过它的getHeaders()方法可获取头部集合,再用addTextHeader()添加自定义文本头部。
  • 若要覆盖默认生成的Message-ID,需确保传入的$reply->message_id符合邮件标准格式(比如<xxx@domain.tld>),否则可能被邮件服务器自动覆盖。

内容的提问来源于stack exchange,提问作者Tanvir Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:55:22