Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Howto set Return-Path in Laravel 9 (Symfony Mailer)

If I just add the header in the mailable:

public function headers()
{
    return new Headers(
        text: [
            'Return-Path' => config('mail.from.address'),
        ],
    );
}

I get an error:

The "Return-Path" header must be an instance of "Symfony\Component\Mime\Header\PathHeader" (got "Symfony\Component\Mime\Header\UnstructuredHeader").

like image 757
PiTheNumber Avatar asked Nov 02 '25 09:11

PiTheNumber


2 Answers

Only solution I found was with "using" in Envelope:

public function envelope()
{
    return new Envelope(
        using: [
            function (Email $message) {
                $message->getHeaders()->addHeader('Return-Path', config('mail.from.address'));
            },
        ]
    );
}

That works for me.

I also tried to add a name:

use Symfony\Component\Mime\Address as SymfonyAddress;
$message->getHeaders()->addHeader('Return-Path', new SymfonyAddress(config('mail.from.address'), config('mail.from.name')));

But that creates an invalid result:

Return-Path: <"Some Name" <[email protected]>>

I guess name is not supported here?

like image 53
PiTheNumber Avatar answered Nov 03 '25 21:11

PiTheNumber


In your Mailable build() function you can do something like this:

use Symfony\Component\Mime\Email;

$this->withSymfonyMessage(function (Email $message) {
    $message->getHeaders()->addPathHeader('Return-Path', "EMAIL_ADDRESS_HERE");
});

Works for me in Laravel 11

like image 33
jeremyj11 Avatar answered Nov 03 '25 23:11

jeremyj11