Size: a a a

2021 September 10

E

Ebaklak in Laravel Pro
Помогите плз, как поменять конфиг SMTP почтовый в рантайме?
В бд хранится конфиг, при запуске подтягивается оттуда и применяется - работает.
При попытке после этого поменять конфиг, 0 реакции до рестарта сервера.

Конфиг сетаю через Config set Такое чувство что конфиги нельзя обновлять в почте, а заказчик это требует
источник

EG

Egor Gruzdev in Laravel Pro
В чем состоит задача и сколько таких конфигов?
источник

E

Ebaklak in Laravel Pro
На сайте есть форма с данными smtp, почту могут потом поменять прямо через сайт. При этом новая почта должна сразу примениться
источник

E

Ebaklak in Laravel Pro
Такая же задача с sms сервисом
источник

E

Ebaklak in Laravel Pro
Конфиги нестатичные, захотят введут чето свое
источник

EG

Egor Gruzdev in Laravel Pro
Тогда надо не менять а добавлять новый mailer с транспортом smtp и при отправке указывать новый добавленый конфиг, только все это будет работать если отправка будет сразу же, а не через очереди.

Это как самый примитивный способ.
источник

E

Ebaklak in Laravel Pro
Это можно как-то сделать с применением MailMessage класса?
источник

PE

Pocket 🐘 Elephant in Laravel Pro
Совершенно логично что это так работает ведь мейлер в ларе singleton и инициализируется один раз, тебе нужно для каждого нового конфига новый мейлер создавать
источник

EG

Egor Gruzdev in Laravel Pro
А конфиги где то сохраняются?
источник

XM

Xachik Margaryan in Laravel Pro
Друзья я получаю токен от Basic Auth и хочу использовать в дальнейших запросах, но получаю такую ошибку
resulted in a 401 Full authentication is required to access this resource.
что делаю не так?
источник

E

Ebaklak in Laravel Pro
Есть один единственный актуальный конфиг, он лежит в бд.
Конфиг можно поменять запросом на бекенд, после этого вся почта должна работать по новому конфигу сразу.
источник

EG

Egor Gruzdev in Laravel Pro
тогда расширяешь MailManager через extend метод, добавляешь туда свой свой драйвер, например my_driver и из своей реализации возвращаешь нужные настройки mailer.
источник

AH

Andrew Hnidets in Laravel Pro
единственный способ, которым заставил это работать когда-то - сделал свой класс MailMessage, екстенднулся от того что был. и в новом классе переопределил __construct, где делал Config::set(). и, получается, все нотификейшины нужно делать екстенд от нового класса. около костыль, но работало
источник

E

Ebaklak in Laravel Pro
Спасибо, попробую
источник

PE

Pocket 🐘 Elephant in Laravel Pro
Есть вариант проще
источник

PE

Pocket 🐘 Elephant in Laravel Pro
Смотри https://github.com/laravel/framework/blob/8.x/src/Illuminate/Mail/MailManager.php#L485
У менеджера есть метод prune
источник

XM

Xachik Margaryan in Laravel Pro
есть Варианты друзья? скиньте хотя бы доки или подсказки.
источник

E

Ebaklak in Laravel Pro
А потом само приконнектит mailer при отправке?
источник

PE

Pocket 🐘 Elephant in Laravel Pro
Или еще есть метод https://github.com/laravel/framework/blob/8.x/src/Illuminate/Mail/MailManager.php#L534
forgetMailers

Можно пробовать заменять текущий конфиг через Config::set на актуальный из БД, удалять через prune текущий мейлер
источник

E

Ebaklak in Laravel Pro
Ага, конфиг то нормально меняется, почту как раз и надо перезапускать)
источник