我们知道很多系统都要发邮件给客户,这个是很普遍的一个功能了,不但要发客户注册验证的邮件,也要发业务类型的邮件。Laravel使得这个过程非常简单,在本文中让我们来测试这个功能。
在这里我们熟悉一个Mailable的概念,这个就是Laravel用来发邮件的整个系统。这里也有视图这个概念,也就是发送到客户的邮件有个视图。这里有很多部分,在大部分的情况下您需要一个服务来发送邮件。Laravel里有个命令就是
php artisan make:mail WelcomeMail -m mails.welcome
如果我们看这个的帮助文件,就发现这个命令是创建一个发送邮件类的,还有一个邮件模板。视图呢,我们会选择markdown版本的。WelcomeMail是mail名称,-m就表明是markdown。mails.welcome是视图的路径,也就是mails文件夹下面的welcome.blade.php。
执行完这个命令后我们会发现app/Http文件夹下面多了一个mail文件夹,里面多了一个WelcomeMail.php。视图文件夹下面多了一个mails文件夹并且里面多了一个welcome.blade.php。
第一个问题是,我们如何在浏览器预览这个邮件。这个非常简单,我们在路由文件中添加一个路由,但是我们把返回的改成我们的类名便可。
Route::get('/email', function () {
return new \App\Mail\WelcomeMail();
});
这就是我们的视图了,然后我们可以在视图文件里进行一些修改,改成我们需要的内容。上面的默认的laravel这个名怎么改呢?修改.env文件里的APP_NAME这个变量就行了。
那我们怎么进行测试邮件的发送呢,我在Laravel6.x如何用mailtrap.io设置本地邮箱验证机制?这篇文章里已经说明了如何设置mailtrap.io。在此不再赘述。按照文章设置就行了。
发送邮件的话一行代码就够了,因为我们把邮件的类已经写好了,所以直接引用,实际发送邮件我们用的是mail这个类。我们在刚才的路由文件中:
Route::get('/email', function () {
\Illuminate\Support\Facades\Mail::to("admin@admin.com")->send(new \App\Mail\WelcomeMail());
return new \App\Mail\WelcomeMail();
});
我们用的是to方法,把想要发的邮箱放进去,然后把邮件内容放在后面的send方法里面。然后打开下视图文件就可以了。
同理,我们在控制器里面的头部放这个代码便可以发送邮件了。如果在生产环境下我们就需要用mailgun这样的服务了。
网友评论