当前位置:首页 > CMS教程 > 其它CMS > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2022-03-14 15:53:58 浏览: 评论:0 

这篇文章主要给大家介绍了关于Laravel6.18.19如何优雅的切换发件账户的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Laravel6.18.19具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。

前言

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

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

方法如下:

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

  1. <?php 
  2. return [ 
  3.  'emails' => [ 
  4.   'a' => [ 
  5.    'email' => 'a@188.com'
  6.    'password' => '专属客户端密码'
  7.    'smtp' => 'smtp.188.com'
  8.    'port' => '465'
  9.    'encryption' => 'ssl'
  10.    'name' => '靓仔A'
  11.   ], 
  12.   'b' => [ 
  13.    'email' => 'b@188.com'
  14.    'password' => '专属客户端密码'
  15.    'smtp' => 'smtp.188.com'
  16.    'port' => '994'
  17.    'encryption' => 'ssl'
  18.    'name' => '靓女b'
  19.   ], 
  20.  ], 
  21. ]; 

接下来创建切换助手类

  1. <?php 
  2. namespace App\Mail; 
  3. use Illuminate\Support\Facades\Mail; 
  4.    
  5. class MailHelper 
  6.  public static function setAccount($accountName
  7.  { 
  8.   $transport = new \Swift_SmtpTransport( 
  9.    config("my_emails.emails.{$accountName}.smtp"), 
  10.    config("my_emails.emails.{$accountName}.port"), 
  11.    config("my_emails.emails.{$accountName}.encryption"
  12.   ); 
  13.   $transport->setUsername(config("my_emails.emails.{$accountName}.email")); 
  14.   $transport->setPassword(config("my_emails.emails.{$accountName}.password")); 
  15.   $mailer = new \Swift_Mailer($transport); 
  16.   Mail::setSwiftMailer($mailer); 
  17.   Mail::alwaysFrom(config("my_emails.emails.{$accountName}.email"), config("my_emails.emails.{$accountName}.name")); 
  18.  } 

实际使用如下:

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

Tags: Laravel6.18.19

分享到: