cawecoy
cawecoy

Reputation: 2419

"Reply-to" field in Laravel mail is not working

I need help to figure out how to set the reply-to field in app/config/mail.php. I'm using Laravel 4 and it's not working. This is my app/config/mail.php:

<?php

return array(
    'driver' => 'smtp',
    'host' => 'smtp.gmail.com',
    'port' => 587,
    'from' => [
        'address' => '[email protected]',
        'name' => 'E-mail 1'
    ],
    'reply-to' => [
        'address' => '[email protected]',
        'name' => 'E-mail 2'
    ],
    'encryption' => 'tls',
    'username' => '[email protected]',
    'password' => 'pwd',
    'pretend' => false,
);

Upvotes: 41

Views: 55631

Answers (4)

Abduhafiz
Abduhafiz

Reputation: 3404

Another option is to customizing SwiftMailer Message - https://laravel.com/docs/8.x/mail#customizing-the-swiftmailer-message.

->withSwiftMessage(function ($message) use ($senderEmail) {
    $message->getHeaders()
        ->addTextHeader('Return-Path', $senderEmail);
})

Upvotes: 0

Naimur Hasan
Naimur Hasan

Reputation: 675

I'm using mailable and in my App\Mail\NewUserRegistered::class on the build function I'm doing this,

public function build()
    {
        return $this->replyTo('email', $name = 'name')
                ->markdown('emails.admin_suggestion');
    }

Upvotes: 0

chifliiiii
chifliiiii

Reputation: 2339

It's possible since Laravel 5.3 to add a global reply. In your config/mail.php file add the following:

'reply_to' => [
    'address' => '[email protected]',
    'name' => 'Reply to name',
],

Upvotes: 26

Colin
Colin

Reputation: 2189

Pretty sure it doesn't work this way. You can set the "From" header in the config file, but everything else is passed during the send:

Mail::send('emails.welcome', $data, function($message)
{
    $message->to('[email protected]', 'John Smith')
        ->replyTo('[email protected]', 'Reply Guy')
        ->subject('Welcome!');
});

FWIW, the $message passed to the callback is an instance of Illuminate\Mail\Message, so there are various methods you can call on it:

  • ->from($address, $name = null)
  • ->sender($address, $name = null)
  • ->returnPath($address)
  • ->to($address, $name = null)
  • ->cc($address, $name = null)
  • ->bcc($address, $name = null)
  • ->replyTo($address, $name = null)
  • ->subject($subject)
  • ->priority($level)
  • ->attach($file, array $options = array())
  • ->attachData($data, $name, array $options = array())
  • ->embed($file)
  • ->embedData($data, $name, $contentType = null)

Plus, there is a magic __call method, so you can run any method that you would normally run on the underlying SwiftMailer class.

Upvotes: 103

Related Questions