How to set dynamic SMTP details laravel How to set dynamic SMTP details laravel laravel laravel

How to set dynamic SMTP details laravel


My own approach: remove Illuminate\Mail\MailServiceProvider::class from config/app.php list of providers loaded at bootstrap, and create a new middleware to load it manually after the user has been identified.

<?phpnamespace App\Http\Middleware;use Illuminate\Contracts\Auth\Guard;  use Illuminate\Mail\TransportManager;use Closure;  use Mail;  use Config;  use App;class OverwriteMail  {    public function __construct(Guard $auth)    {        $this->auth = $auth;    }    public function handle($request, Closure $next)    {        /*            $conf is an array containing the mail configuration,            a described in config/mail.php. Something like:            [                'driver' => 'smtp',                'host' => 'smtp.mydomain.com',                'username' => foo',                'password' => 'bar'                ...            ]        */        $conf = my_own_function();        Config::set('mail', $conf);        $app = App::getInstance();        $app->register('Illuminate\Mail\MailServiceProvider');        return $next($request);    }}

Source: http://blog.madbob.org/laravel-dynamic-mail-configuration/


I think this should answer your question:https://laravel.io/index.php/forum/07-22-2014-swiftmailer-with-dynamic-mail-configuration

Just store it in a database table and use the Config facade to set the details on the fly.