多邮件发送配置和使用
1. 运行环境
centos7 Laravel8+php7+mysql5.6
2. 问题描述?
- 项目是一个多商户商城,需要实现:商户可配置自己的邮件服务(QQ邮箱,163邮箱,各类企业邮箱等)不配置时适用系统默认配置(.env中配置)
- 我在本地每次发送邮件时写入一个商家自定义的配置进行发送 但是总不能每次调用都去配置一次吧
,代码如下:
自定义配置使用
// 配置写入缓存
$mailer_config = [
"mail.mailers.seller99" => [
'transport' => 'smtp',
'host' => $model->mail_host,
'port' => $model->mail_port,
'encryption' => $model->mail_encryption,
'username' => $model->mail_username,
'password' => $model->mail_password,
'timeout' => null,
'auth_mode' => null,
"from" => [
'address' => $model->mail_from_address,
'name' => $model->mail_from_name,
]
]
];
Redis::set('mail_config99', json_encode($mailer_config));
·······
// 读取商家配置追加到config并调用
$mail_config = json_decode(Redis::get('mail_config99'),true);
if (!!$mail) {
config($mail_config);
}
$config = config('mail.mailers.seller99');
Mail::mailer('seller99')
->to($request->user())
->from($config['from']['address'],$config['from']['name'])
->send(new OrderShipped($order));
3. 您期望得到的结果?
按照以上代码执行后 我调用的时候是没问题的,我想能不能只在一个地方永久写入或修改配置(如:用户新增或修改时),后面任何地方不在写入直接调用即可(调用时用户可能是未登录状态)。或者大佬可以说下config('key','val')
写入的配置的存活周期时怎么样的