1. 程式人生 > 程式設計 >Laravel6.18.19如何優雅的切換髮件賬戶

Laravel6.18.19如何優雅的切換髮件賬戶

前言

在做一個通知系統時,業務需求,根據不同場景使用不同的賬戶傳送郵件,laravel預設只支援一個郵箱發郵件。不滿實際情況,使用Config::set()方法動態設定賬戶後,可以成功傳送郵件,再次set無法再次修改發件賬戶。

查閱多個資料的值,需要重新設定SwiftMailer。

方法如下:

建立郵箱賬戶配置檔案/config/my_emails.php

<?php
return [
 'emails' => [
  'a' => [
   'email' => '[email protected]','password' => '專屬客戶端密碼','smtp' => 'smtp.188.com','port' => '465','encryption' => 'ssl','name' => '靚仔A',],'b' => [
   'email' => '[email protected]','port' => '994','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('[email protected]')->send(new TestMail());
MailHelper::setAccount('b');
Mail::to('[email protected]')->send(new TestMail());

總結

到此這篇關於Laravel6.18.19如何優雅的切換髮件賬戶的文章就介紹到這了,更多相關Laravel6.18.19切換髮件賬戶內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!