Laravel6.18.19如何优雅的切换发件账户
吾爱主题
阅读:135
2021-10-18 14:42:00
评论:0
前言
在做一个通知系统时,业务需求,根据不同场景使用不同的账户发送邮件,laravel默认只支持一个邮箱发邮件。不满实际情况,使用Config::set()方法动态设置账户后,可以成功发送邮件,再次set无法再次修改发件账户。
查阅多个资料的值,需要重新设置SwiftMailer。
方法如下:
创建邮箱账户配置文件/config/my_emails.php
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?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' , ], ], ]; |
接下来创建切换助手类
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?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" )); } } |
实际使用如下:
?1 2 3 4 5 | <?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切换发件账户内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.yinghualuo.cn/archives/1315/laravel6-18-19优雅切换发件账户/
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。