在运行时更改Laravel邮件配置

xfyts7mz  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(145)

我需要在运行时更改Laravel邮件配置。配置需要在运行时更改多次,而不仅仅是在应用程序初始化时更改一次。
下面是代码

foreach ($emails as $email) {
    Config::set('mail.mailers.smtp.username', $email->email);
    Config::set('mail.mailers.smtp.password', $email->password);
    Config::set('mail.from.address', $email->email);

    Mail::to('someone@example.com')->send(new DemoMail('title', 'body'));
}

正如你所看到的,我试图在每次迭代中设置新的配置,但配置只设置一次(在第一次迭代中),所有其他电子邮件都使用第一次迭代中的配置发送。
我已经找到了使用服务提供商的解决方案。类似于这个Dynamic mail configuration with values from database [Laravel]这里的问题是,提供商在应用程序初始化时设置邮件配置,并且在运行时无法更改。所以这并不能解决我的问题。
我想到的第二个想法是,我可以定义多个邮件驱动程序(配置),每个邮件一个,然后我可以使用mailer()函数来指定我想在每次迭代中使用的那个。这个解决方案的问题是,我需要动态创建这些驱动程序,我不能硬编码它。
我试着在互联网上寻找一个正确的解决方案,但找不到。
任何帮助都很感激
亲切问候

deyfvvtc

deyfvvtc1#

@itstare也许这个Laravel News可以帮助你找到使用的方法。
参考讨论来自该Laracast

相关问题