1. 配置郵件
2. 發(fā)送郵件
創(chuàng)建mailable對象,實際上就是一個用于管理發(fā)送郵件模板以及標(biāo)題的一個管理類
php artisan make:mail OrderShipped
創(chuàng)建好后,在app/mail下就能找到這個類,我們主要要使用以下兩個函數(shù)幫我們來
public function __construct($user)
{
$this->user = $user;
}
public function build()
{
return $this->view('email.password');
}
3. 創(chuàng)建隊列
創(chuàng)建隊列需要用到的數(shù)據(jù)表
php artisan queue:table
php artisan migrate
將env中的隊列類型修改以下,當(dāng)然還有其他隊列類型,例如redis等等,但是database是最簡單的一種
QUEUE_DRIVER=database
這里我們執(zhí)行,在app/job下創(chuàng)建了一個發(fā)送郵件的隊列管理類,你可以取任何名字,這里我叫做SendPixiaxiaEmail
php artisan make:job SendPixiaxiaEmail
在這里我定義了個類屬性,用戶在管理類實例化的時候獲取到一個數(shù)據(jù),用handle的一些操作
protected $user;
public function __construct($user)
{
$this->user = $user;
}
public function handle()
{
// to:對方的郵件地址,
// send:第一個參數(shù)是你的郵件管理類并傳入一個數(shù)據(jù),這里我傳入的是一個用戶的數(shù)據(jù),
// 第二個參數(shù)是傳入一個閉包函數(shù),主要是為了設(shè)置一個郵件的主題
Mail::to($this->user->email)->send(new UpdatePassword($this->user),function ($message) {
$message->subject('***會員修改密碼');
});
在我們真正的開始執(zhí)行隊列之前,我們還需要在命令行里開啟隊列,這樣我們才能去監(jiān)聽隊列任務(wù)的發(fā)生,并去執(zhí)行
php artisan queue:work
如果你修改了隊列的管理類代碼,那么你還需要去重啟才能重新生效
php artisan queue:restart
這里開始真正執(zhí)行,dispatch用于分發(fā)隊列任務(wù),傳入我們的user,這個user將用于剛剛在SendPixiaxiaEmail的construct中的獲取的user,緊接著delay用于延遲分發(fā),這里我就延遲了一分鐘,記得引入cabbon類哦
$data = SendPixiaxiaEmail::dispatch(User::where(['id'=>30996])->first())->delay(Carbon::now()->addMinutes(1));
注意:此時的隊列雖然開啟了,但是并沒有持久化,也就是說當(dāng)你關(guān)掉命令行時就會停止,那么我們需要linux中的一些守護(hù)進(jìn)程的工具幫我們守護(hù),以下是我看到的一個例子,可以參考
https://www.cnblogs.com/chancy/p/7644061.html