如何在 Laravel 5.1 中为电子邮件添加标头

2022-08-30 20:53:43

有没有办法在Laravel 5.1中的所有电子邮件中添加默认标题?我希望所有电子邮件都使用以下标头发送:

x-mailgun-native-send: true

答案 1

Laravel使用SwiftMailer进行邮件发送。

当您使用 Mail 外观发送电子邮件时,调用 send() 方法并定义一个回调:

\Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) {
    $m->to($user->email, $user->name)->subject('Your Reminder!');
});

回调接收作为对象的变量,该变量具有返回可用于设置标头的对象的方法:$m\Illuminate\Mail\MessagegetSwiftMessage()\Swift_Message

$swiftMessage = $m->getSwiftMessage();

$headers = $swiftMessage->getHeaders();
$headers->addTextHeader('x-mailgun-native-send', 'true');

答案 2

我知道这是一篇老文章,但我现在路过同样的问题,我认为这可能对其他人有用。

如果你使用的结构与Laravel(6.x和7.x)中所示完全相同,如下所示:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->from('example@example.com')
                ->view('emails.orders.shipped');
}

您可以按以下格式向电子邮件添加标题:

public function build()
{
   return $this->from('example@example.com')
                ->view('emails.orders.shipped')
                ->withSwiftMessage(function ($message) {
                    $message->getHeaders()
                        ->addTextHeader('Custom-Header', 'HeaderValue');
                });
}

我希望这能有所帮助。

链接到当前文档:https://laravel.com/docs/7.x/mail#customizing-the-swiftmailer-message


推荐