我使用 Laravel 4 的 Mail::queue()
来发送电子邮件,使用内置的 Mailgun 驱动程序。问题是我希望能够从多个 Mailgun 域发送电子邮件,但必须在 app/config/services.php
中设置域。由于我使用的是 Mail::queue()
,因此我看不到如何动态设置该配置变量。
有什么办法可以实现我的要求吗?理想情况下,我希望在调用 Mail::queue()
时能够传入域(Mailgun api key 对于我想要发送的所有域都是相同的)。
最佳答案
我使用宏
来添加动态配置。我不记得这是否可以在 Laravel 4 中完成,但可以在 5 上完成。
在服务提供者(AppServiceProvider
)中注册宏
public function boot()
{
Mail::macro('setConfig', function (string $key, string $domain) {
$transport = $this->getSwiftMailer()->getTransport();
$transport->setKey($key);
$transport->setDomain($domain);
return $this;
});
}
然后我可以这样使用:
\Mail::setConfig($mailgunKey, $mailgunDomain)->to(...)->send(...)
就你的情况
\Mail::setConfig($mailgunKey, $mailgunDomain)->to(...)->queue(...)
关于email - 使用 Laravel Mail 外观从多个 Mailgun 域发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28731061/