laravel: как установить настройки smtp из базы данных

#php #laravel #email #smtp

#php #laravel #Адрес электронной почты #smtp

Вопрос:

я хочу использовать данные, хранящиеся в базе данных, для установки порта 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
при удалении этой строки из 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"
 

как решить эту проблему

Комментарии:

1. В настройках таблицы базы данных у вас также есть те же учетные данные mailtrap?

2. @sta да……..

3. Укажите значение и попробуйте, как Config::set('mail.port', 587); и дайте мне знать результат

4. Config::set('mail.host', 'smtp.mailtrap.io'); Config::set('mail.username', '9ed941b3d4e2d6'); Config::set('mail.password', 'd13ea2a29a5cee'); Config::set('mail.port', 2525); по умолчанию загружается конфигурация из .env и при удалении env отображается эта ошибка: Expected response code 250 but got code "550", with message "550 5.7.1 Relaying denied

Ответ №1:

Ключи в Config::set() не соответствуют ключам в configmail.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());
    }
}