Someone knows how to add headers to emails sent through Laravel Notification System?
I am not talking about Mailable classes where I can set header through the
In ./app/Notifications/myNotification.php, add this code in your __construct() function:
$this->callbacks[]=( function($message){
$message->getHeaders()->addTextHeader('x-mailgun-native-send', 'true');
});
Replace the "x-mailgun-native-send" with any header you wish to add, and 'true' with the desired value.
See https://github.com/laravel/ideas/issues/475
Actually I've found 2 ways to append headers.
When the notification is sent via mail channel an Illuminate\Mail\Events\MessageSending
event is fired.
Append a listener to it. In handle()
you will get the Swift_Message
object.
Or in the AppServiceProvider
's register()
method override the MailChannel
with your own and append the header in the send()
method.
$this->app->bind(
\Illuminate\Notifications\Channels\MailChannel::class,
MyMailChannel::class
);
Debbie V has a pretty close answer but not quite right. The issue she is referencing makes it clear, but she missed the necessary context that solution provided.
By default a Notification in Laravel uses MailMessage
, however you can also have it return a Mailable
instead. Only if you: a) create a custom mailable, and b) use that instead of MailMessage
will the callbacks be applied.
A more complete solution would be:
php artisan make:mail MyMailable
public function toMail($notifiable)
method to utilize a the new Mailable
.MyMailable
class.And after that you should be all good. The hardest part of this is just adapting the current MailMessage
you use to fit the API of a Mailable
.