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 相关文章推荐
Mysql中limit的用法方法详解与注意事项
Apr 19 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
yii上传文件或图片实例
Apr 01 PHP
php实现mysql备份恢复分卷处理的方法
Dec 26 PHP
PHP根据session与cookie用户登录状态操作类的代码
May 13 PHP
PHP登录验证码的实现与使用方法
Jul 07 PHP
Yii2中关联查询简单用法示例
Aug 10 PHP
php使用curl代理实现抓取数据的方法
Feb 03 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
laravel5.4生成验证码的实例讲解
Aug 05 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
php在linux环境中如何使用redis详解
Dec 15 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
php中fgetcsv()函数用法实例
2014/11/28 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
PHP strripos函数用法总结
2019/02/11 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
JavaScript实现添加、查找、删除元素
2015/07/02 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
js时间比较 js计算时间差的简单实现方法
2016/08/26 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
vue中v-model动态生成的实例详解
2017/10/27 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
2019/05/26 Javascript
js 下拉菜单点击旁边收起实现(踩坑记)
2019/09/29 Javascript
node.js基础知识汇总
2020/08/25 Javascript
[49:21]TNC vs VG 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第三场 8.20.mp4
2019/08/22 DOTA
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
Python hmac模块使用实例解析
2019/12/24 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
css3 按钮样式简单可扩展创建
2013/03/18 HTML / CSS
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
转预备党员政审材料
2014/02/06 职场文书
小学社团活动总结
2014/06/27 职场文书
个人委托书怎么写
2014/09/17 职场文书
Python中三种花式打印的示例详解
2022/03/19 Python
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技