如何设置动态SMTP详细信息laravel

时间:2017-03-06 13:09:14

标签: laravel smtp

我正在处理一个项目,我需要在每个管理员登录时更新SMTP详细信息。我将详细信息存储在数据库中,这是最好的方法。

2 个答案:

答案 0 :(得分:3)

我自己的方法:从引导程序中加载的Illuminate\Mail\MailServiceProvider::class提供程序列表中删除config/app.php,并创建一个新的中间件,以便在识别用户后手动加载它。

<?php

namespace 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);
    }
}

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

答案 1 :(得分:1)

我认为这应该回答你的问题: https://laravel.io/index.php/forum/07-22-2014-swiftmailer-with-dynamic-mail-configuration

只需将其存储在数据库表中,然后使用Config外观即时设置详细信息。