laravel: 如何从数据库设置 smtp 设置

laravel: how to set smtp settings from database

我想使用数据库中存储的数据在控制器中设置 smtp 端口、用户、密码、主机

public function update(Request $request)
{

Config::set('mail.host', DB::table('settings')->find(4)->val);
Config::set('mail.username', DB::table('settings')->find(2)->val);
Config::set('mail.password', DB::table('settings')->find(3)->val);
Config::set('mail.port', DB::table('settings')->find(5)->val);

if($request->email_test !== null) {
    Mail::send(new MailTesting());
    }
}

但是从 .env 设置了邮件配置 当从环境中删除此行时:

MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=9ed941b3d4e2d6m
MAIL_PASSWORD=d13ea2a29a5ceem

我显示这个错误:

Expected response code 250 but got code "550", with message "550 5.7.1 Relaying denied"

如何解决这个问题

Config::set()中的键与config\mail.php(默认标准文件)中的键不对应,尝试更改键以对应标准默认文件

public function update(Request $request)
{

    Config::set('mail.mailers.smtp.host', DB::table('settings')->find(4)->val);
    Config::set('mail.mailers.smtp.username', DB::table('settings')->find(2)->val);
    Config::set('mail.mailers.smtp.password', DB::table('settings')->find(3)->val);
    Config::set('mail.mailers.smtp.port', DB::table('settings')->find(5)->val);

    if($request->email_test !== null) {
        Mail::send(new MailTesting());
    }
}