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.