(已解决) 如何动态加载配置进行邮件的发送?
前言
Laravel 对发送邮件天然支持并且友好,简单的 配置 即可使用。
邮件发送功能
问题
单一加载 mail 配置进行邮件发送,改动时 需要手动更改 配置文件 config/mail.php
尝试解决
既然是动态加载 mail 配置,则尝试 覆盖 mail 配置 查看效果。
但实际效果还是默认配置,并未按照覆盖配置发送
代码
$configs = [
[ // qq 配置
'driver' => 'smtp',
'host' => 'smtp.qq.com',
'port' => '465',
'from' => [
'address' => 'xxxx@llons.com',
'name' => 'llons-qq'
],
'username' => '',
'password' => ''
],[ // 163 配置
'driver' => 'smtp',
'host' => 'smtp.163.com',
'port' => '465',
'from' => [
'address' => 'xxxx@163.com',
'name' => 'llons-163'
],
'username' => '',
'password' => ''
]
];
// 覆盖 mail 配置
config([
'mail' => array_merge(config('mail'), $configs[0])
]);
// 添加后解决该问题
(new MailServiceProvider(app()) )->register();
$data = [
'email' => 'sendAddress',
'name' => 'name',
];
// 实际 发送 配置还是按照 .env 配置
\Mail::send('mail', $data, function($message ) use($data)
{
$message->to($data['email'], $data['name'])->subject('see hi!');
});
为啥后面有一个config('mail');
我试了一下,合并后新的config是可以生效的。而且为什么用合并,直接替换不好吗
@Littlesqx 已修改。
学习了,恍然大悟,感谢您的分享
学到了