1.引入 guzzlehttp/guzzle包
命令:composer require guzzlehttp/guzzle
2.修改.env文件的發(fā)送郵件配置
注意阱驾,不用修改mail.config文件,將以下模板替代laravel關(guān)于郵件的配置:
AIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=587
MAIL_FROM_ADDRESS=fsisjacky@163.com
MAIL_USERNAME=fsisjacky@163.com
MAIL_PASSWORD=************
MAIL_FROM_NAME=fsisjacky@163.com
MAIL_ENCRYPTION=ssl
3.創(chuàng)建可郵寄類(類名可根據(jù)實(shí)際需要進(jìn)行修改):
命令:php artisan make:mail UserValidate
4.編輯可郵寄類
執(zhí)行上一條命令,會在App目錄下多一個Mail的目錄,UserValidate這個可郵寄類就在Mail目錄里面器联,這個類是用來配置郵件的數(shù)據(jù)操作的,可以簡單的理解為就是郵件專用的控制器遍烦。這個可郵寄類默認(rèn)有一個builder方法和一個構(gòu)造函數(shù)俭嘁,構(gòu)造函數(shù)可以依賴注入需要的模型,builder可以調(diào)用要發(fā)送的郵件視圖文件服猪。用法見下面的代碼:
namespace App\Mail;
use ...
class PwdValidate extends Mailable
{
? ? use Queueable, SerializesModels;
? ? //這里的屬性為public供填,則可以在builder方法引入的視圖中直接{{$user}}這樣用
?? //如果為protected拐云,則必須在builder方法引入視圖后加->with(),詳見手冊
??? public $user;
? ? public function __construct(User $user){? $this->user=$user;//通過依賴注入User模型 }
? ? public function build() {?? return $this->view('email.pwdValidate'); }
}
5.創(chuàng)建發(fā)送郵件操作的接口近她,即路由:
這里為演示就不寫post表單了叉瘩,簡單用get方法操作:
Route::get('/mail','Mail\UserMailController@send');
6.創(chuàng)建UserMailController控制器并編寫發(fā)送郵件的方法:
命令:php artisan make:controller UserMailController
并在控制器中添加send()方法:
public function send(){
? ? $address="957403612@qq.com";//要發(fā)送的郵箱地址
? ? $user=User::find(2);//依賴注入的模型數(shù)據(jù)
? ? Mail::to($address)->send(new PwdValidate($user));
}
7.編寫email.pwdValidate視圖文件
在視圖目錄App\Resource\views目錄下,新建一個email目錄粘捎,新建一個pwdValidate.blade.php視圖模板文件薇缅,在視圖模板文件中,簡單的寫一些展示數(shù)據(jù)的模板
<div>
? Test User Name:{{$user->name}}
</div>
8.測試
現(xiàn)在攒磨,可以到瀏覽器中輸入網(wǎng)址:abc.text/mail,測試郵件是否被發(fā)送出去了泳桦。如果發(fā)送成功,會出現(xiàn)一個空白界面娩缰,然后在您設(shè)置發(fā)送的郵箱的已發(fā)送郵件里面灸撰,會有一封模板內(nèi)容的郵件。