Как изменить конфигурацию почты перед отправкой почты в контроллере с помощью Laravel?

Я использую Laravel 4, я хотел бы изменить конфигурацию почты (например, driver/host/port/...) в контроллере, поскольку я хотел бы сохранять профили в базах данных с другой конфигурацией почты. Это основная почтовая рассылка, использующая конфигурацию из config/mail.php

Mail::send(
    'emails.responsable.password_lost',
    array(),
    function($message) use ($responsable){
        $message->to($responsable->email, $responsable->getName());
        $message->subject(Lang::get('email.password_lost'));
    });

Я попытался что-то добавить, но это не сработало

 $message->port('587');

Спасибо за вашу поддержку!

Жан

Ответ 1

Вы можете установить/изменить любую конфигурацию на лету, используя Config::set:

Config::set('key', 'value');

Итак, чтобы установить/изменить порт в mail.php, вы можете попробовать следующее:

Config::set('mail.port', 587); // default

Примечание. Значения конфигурации, установленные во время выполнения, устанавливаются только для текущий запрос и не будет перенесен на последующие запросы. Подробнее.

Обновить: Взлом для сохранения конфигурации во время выполнения.

Ответ 2

Выбранный ответ не помог мне, мне нужно было добавить следующее для зарегистрированных изменений.

Config::set('key', 'value');
(new \Illuminate\Mail\MailServiceProvider(app()))->register();