如何设置 Laravel 的动态 SMTP 详细信息

3

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

2个回答

6

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

<?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动态邮件配置/

本文介绍了如何在Laravel项目中使用动态邮件配置。动态配置能够允许你根据需要在不同情况下更改SMTP帐户,例如,在生产和开发环境之间切换。此外,这篇文章还介绍了如何使用.env文件来存储配置信息,并从邮件控制器中访问它们。


2

1
当然,您需要根据自己的需求进行调整,请发布更多有关您问题的详细信息。 - xaggre

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接