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,测试邮件是否被发送出去了。如果发送成功,会出现一个空白界面,然后在您设置发送的邮箱的已发送邮件里面,会有一封模板内容的邮件。