您好,登錄后才能下訂單哦!
小編給大家分享一下laravel5.6框架郵件隊列database驅動怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
具體如下:
一: 郵件初始參數配置
配置 .env (demo示例是163郵箱,開啟POP3和SMTP服務,獲取授權密碼)
MAIL_DRIVER=smtp MAIL_HOST=smtp.163.com MAIL_PORT=465 MAIL_USERNAME=你的163郵箱地址 MAIL_PASSWORD=你的163郵箱地址對應的授權密碼(不是登錄密碼) MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=你的163郵箱地址
修改 .env 中的 QUEUE_DRIVER 值 (配置文件 config/queue.php 默認是同步'sync', demo配置'database'驅動)
QUEUE_DRIVER=database
二: 數據庫建表
//隊列任務表 php artisan queue:table //任務執行失敗表 php artisan queue:failed-table //執行數據庫遷移 php artisan migrate
三: 生成任務類
php artisan make:job SendEmail
生成之后,在handle方法中處理發送隊列郵件
<?php namespace App\Jobs; use Illuminate\Bus\Queueable; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Support\Facades\Mail; class SendEmail implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; private $email; private $content; private $subject; /** * Create a new job instance. * * @return void */ public function __construct( $email, $content, $subject) { $this->email = $email; $this->content = $content; $this->subject = $subject; } /** * Execute the job. * * @return void */ public function handle() { $email = $this->email; $subject = $this->subject; Mail::send( 'admin.emails.test', ['content' => $this->content], function ($message) use($email, $subject) { $message->to($email)->subject($subject); } ); // Mail::failures() 返回的錯誤郵件信息,判斷是否發送成功. (無錯誤信息,返回空數組) if(empty(Mail::failures())){ dd('發送成功'); }else{ dd('發送失敗'); } } }
四: 對應郵件發送的控制器,任務加到隊列中
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Jobs\SendEmail; /** * Description of BookedController */ class BookedController extends Controller { public function queueSend() { //郵件發送demo數據 $data =[ 0=>[ 'email'=>'XXXXXX@qq.com', 'content'=>'Hello World One', 'subject'=>'測試標題一', ], 1=>[ 'email'=>'XXXXXX@qq.com', 'content'=>'Hello World Two', 'subject'=>'測試標題二', ] ]; foreach ($data as $item){ //數據循環,插入表jobs中,隊列初始化數據 dispatch(new SendEmail($item['email'],$item['content'],$item['subject'])); } } }
五: 執行隊列里的任務
//默認只執行一次隊列請求,當請求執行完成后就終止 php artisan queue:work //監聽隊列請求,只要運行著,就能一直接受請求,除非手動終止 php artisan queue:listen
以上是“laravel5.6框架郵件隊列database驅動怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。