前言
在做一個通知系統(tǒng)時,業(yè)務(wù)需求,根據(jù)不同場景使用不同的賬戶發(fā)送郵件,laravel默認只支持一個郵箱發(fā)郵件。不滿實際情況,使用Config::set()方法動態(tài)設(shè)置賬戶后,可以成功發(fā)送郵件,再次set無法再次修改發(fā)件賬戶。
推薦教程:《Laravel教程》
方法如下:
創(chuàng)建郵箱賬戶配置文件/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', ], ], ];
接下來創(chuàng)建切換助手類
<?php namespace AppMail; use IlluminateSupportFacadesMail; 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());
總結(jié)
到此這篇關(guān)于Laravel6.18.19如何優(yōu)雅的切換發(fā)件賬戶的文章就介紹到這了