Как добавить заголовки в электронную почту в Laravel 5.1

Есть ли способ добавить заголовки по умолчанию для всех писем в Laravel 5.1? Я хочу, чтобы все письма отправлялись со следующим заголовком:

x-mailgun-native-send: true

Ответ 1

Laravel использует SwiftMailer для отправки почты.

Когда вы используете почтовый фасад для отправки электронной почты, вы вызываете метод send() и определяете обратный вызов:

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

Обратный вызов получает переменную $m, которая является объектом \Illuminate\Mail\Message, которая имеет метод getSwiftMessage(), который возвращает объект \Swift_Message, который вы можете использовать для установки заголовков:

$swiftMessage = $m->getSwiftMessage();

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

Ответ 2

Небольшая модификация ответа @maxim-lanin. Вы можете использовать его так, плавно.

\Mail::send('email.view', ['user' => $user], function ($message) use ($user) {
    $message->to($user->email, $user->name)
        ->subject('your message')
        ->getSwiftMessage()
        ->getHeaders()
        ->addTextHeader('x-mailgun-native-send', 'true');
});