Laravel5.4-5.7 smtp邮件发送指南(以163免费
1.引入 guzzlehttp/guzzle包
命令:composer require guzzlehttp/guzzle
2.修改.env文件的发送邮件配置
注意,不用修改mail.config文件,将以下模板替代laravel关于邮件的配置:
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.创建可邮寄类(类名可根据实际需要进行修改):
命令:php artisan make:mail UserValidate
4.编辑可邮寄类
执行上一条命令,会在App目录下多一个Mail的目录,UserValidate这个可邮寄类就在Mail目录里面,这个类是用来配置邮件的数据操作的,可以简单的理解为就是邮件专用的控制器。这个可邮寄类默认有一个builder方法和一个构造函数,构造函数可以依赖注入需要的模型,builder可以调用要发送的邮件视图文件。用法见下面的代码:
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.创建发送邮件操作的接口,即路由:
这里为演示就不写post表单了,简单用get方法操作:
Route::get('/mail','Mail\UserMailController@send');
6.创建UserMailController控制器并编写发送邮件的方法:
命令:php artisan make:controller UserMailController
并在控制器中添加send()方法:
public function send(){
$address="957403612@qq.com";//要发送的邮箱地址
$user=User::find(2);//依赖注入的模型数据
Mail::to($address)->send(new PwdValidate($user));
}
7.编写email.pwdValidate视图文件
在视图目录App\Resource\views目录下,新建一个email目录,新建一个pwdValidate.blade.php视图模板文件,在视图模板文件中,简单的写一些展示数据的模板
<div>
Test User Name:{{$user->name}}
</div>
8.测试
现在,可以到浏览器中输入网址:abc.text/mail,测试邮件是否被发送出去了。如果发送成功,会出现一个空白界面,然后在您设置发送的邮箱的已发送邮件里面,会有一封模板内容的邮件。