多邮件发送配置和使用

1. 运行环境

centos7 Laravel8+php7+mysql5.6

2. 问题描述?

  1. 项目是一个多商户商城,需要实现:商户可配置自己的邮件服务(QQ邮箱,163邮箱,各类企业邮箱等)不配置时适用系统默认配置(.env中配置)
  2. 我在本地每次发送邮件时写入一个商家自定义的配置进行发送 但是总不能每次调用都去配置一次吧:disappointed_relieved:,代码如下:

自定义配置使用

// 配置写入缓存
$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')写入的配置的存活周期时怎么样的

Beer
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 5
  • 都多商户了,每个商户自己的配置肯定是走缓存或者别的途径,不再是走项目配置(.env)了.
  • 这个时候你需要单独抽一个配置类出来,注入到这个流程里
1年前 评论
人厶八夂 (作者) 1年前
sanlilin (楼主) 1年前
sanlilin (楼主) 1年前
sanlilin (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!