5.3版本新添加了mailable,在原有发送邮件方法的基础上增加了更强大的方式,也更方便的运用
使用 artisan 创建
php artisan make:mail WelcomeToMyHouse
生成 App/Mail/WelcomeToMyHouse.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class WelcomeToMyHouse extends Mailable
{
use Queueable, SerializesModels;
public $data; //定义一个公共的变量
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;//接收传入的变量
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
//邮件模板视图 path: views/email/welcome.blade.php
return $this->view('email.welcome')->subject($this->data->title);
}
}
邮件模板 Views/email/welcome.blade.php
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{$data->title}}</title>
</head>
<body>
<h2>欢迎你 {{$data->name}},来到我的地带</h2>
<p>在这里你会发现无限乐趣。。</p>
</body>
</html>
配置mail.php
'from' => [
'address' => 'xxxx@163.com',//发件地址
'name' => 'Tony qu',//发件人名称
],
配置 .env
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxx
MAIL_PASSWORD=xxxx
MAIL_ENCRYPTION=null
这里使用 mailtrap 来测试邮件发送状态,找到测试账户信息,填入到上面.env对应的 配置中
现在正式开始操作邮件的发送
在 Route/web.php 定义一个路由
use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeToMyHouse;
//测试mailable发送邮件
Route::get('mail/send', function () {
$data = (Object)[
'title' => '欢迎来到我的地带',
'name' => 'Tony qu',
'to' => 'qutaotao@qq.com'
];
Mail::to($data->to)->send(new WelcomeToMyHouse($data));
});
测试结果