Laravel6.18.19如何优雅的切换发件账户


Posted in PHP onJune 14, 2020

前言

在做一个通知系统时,业务需求,根据不同场景使用不同的账户发送邮件,laravel默认只支持一个邮箱发邮件。不满实际情况,使用Config::set()方法动态设置账户后,可以成功发送邮件,再次set无法再次修改发件账户。

查阅多个资料的值,需要重新设置SwiftMailer。

方法如下:

创建邮箱账户配置文件/config/my_emails.php

<?php
return [
 'emails' => [
  'a' => [
   'email' => 'a@188.com',
   'password' => '专属客户端密码',
   'smtp' => 'smtp.188.com',
   'port' => '465',
   'encryption' => 'ssl',
   'name' => '靓仔A',
  ],
  'b' => [
   'email' => 'b@188.com',
   'password' => '专属客户端密码',
   'smtp' => 'smtp.188.com',
   'port' => '994',
   'encryption' => 'ssl',
   'name' => '靓女b',
  ],
 ],
];

接下来创建切换助手类

<?php
namespace App\Mail;
use Illuminate\Support\Facades\Mail;
 
class MailHelper
{
 public static function setAccount($accountName)
 {
  $transport = new \Swift_SmtpTransport(
   config("my_emails.emails.{$accountName}.smtp"),
   config("my_emails.emails.{$accountName}.port"),
   config("my_emails.emails.{$accountName}.encryption")
  );
  $transport->setUsername(config("my_emails.emails.{$accountName}.email"));
  $transport->setPassword(config("my_emails.emails.{$accountName}.password"));
  $mailer = new \Swift_Mailer($transport);
  Mail::setSwiftMailer($mailer);
  Mail::alwaysFrom(config("my_emails.emails.{$accountName}.email"), config("my_emails.emails.{$accountName}.name"));
 }
}

实际使用如下:

<?php
MailHelper::setAccount('a');
Mail::to('boy@163.com')->send(new TestMail());
MailHelper::setAccount('b');
Mail::to('girl@163.com')->send(new TestMail());

总结

到此这篇关于Laravel6.18.19如何优雅的切换发件账户的文章就介绍到这了,更多相关Laravel6.18.19切换发件账户内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
PHP中获取文件扩展名的N种方法小结
Feb 27 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
详解PHP使用日期时间处理器Carbon人性化显示时间
Aug 10 PHP
PHP数据库操作四:mongodb用法分析
Aug 16 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
PHP时间函数使用详解
Mar 21 PHP
Laravel 框架返回状态拦截代码
Oct 18 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
深入解析PHP底层机制及相关原理
Dec 11 PHP
Laravel服务容器绑定的几种方法总结
Jun 14 #PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 #PHP
Yii redis集合的基本使用教程
Jun 14 #PHP
php获取小程序码的实现代码(B类接口)
Jun 13 #PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 #PHP
详解php反序列化
Jun 10 #PHP
实例讲解PHP表单
Jun 10 #PHP
You might like
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
php实现的农历算法实例
2015/08/11 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
2016/09/17 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
Python中使用__new__实现单例模式并解析
2019/06/25 Python
python requests使用socks5的例子
2019/07/25 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
宝塔面板出现“open_basedir restriction in effect. ”的解决方法
2021/03/14 PHP
韩国演唱会订票网站:StubHub韩国
2019/01/17 全球购物
计算机大学生的自我评价
2013/10/15 职场文书
机修工岗位职责
2013/11/24 职场文书
工厂会计员职责
2014/02/06 职场文书
测量工程专业求职信
2014/02/24 职场文书
幼儿园教师的考核评语
2014/04/18 职场文书
乱丢垃圾袋检讨书
2014/10/08 职场文书
初婚未育证明样本
2014/10/24 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
MySQL普通表如何转换成分区表
2022/05/30 MySQL