美文网首页DuangDunagSummerBiuPHP
Laravel队列以及发送邮件

Laravel队列以及发送邮件

作者: 夏少白 | 来源:发表于2018-07-06 21:22 被阅读0次

1. 配置邮件

请查看这篇文章

2. 发送邮件

创建mailable对象,实际上就是一个用于管理发送邮件模板以及标题的一个管理类

php artisan make:mail OrderShipped

创建好后,在app/mail下就能找到这个类,我们主要要使用以下两个函数帮我们来

 public function __construct($user)
    {
        $this->user = $user;
    }

    public function build()
    {
        return $this->view('email.password');
    }

3. 创建队列

创建队列需要用到的数据表

php artisan queue:table

php artisan migrate

将env中的队列类型修改以下,当然还有其他队列类型,例如redis等等,但是database是最简单的一种

QUEUE_DRIVER=database

这里我们执行,在app/job下创建了一个发送邮件的队列管理类,你可以取任何名字,这里我叫做SendPixiaxiaEmail

php artisan make:job SendPixiaxiaEmail

在这里我定义了个类属性,用户在管理类实例化的时候获取到一个数据,用handle的一些操作

   protected $user;
    public function __construct($user)
    {
        $this->user = $user;
    }

    public function handle()
    {
//        to:对方的邮件地址,
//        send:第一个参数是你的邮件管理类并传入一个数据,这里我传入的是一个用户的数据,
//            第二个参数是传入一个闭包函数,主要是为了设置一个邮件的主题
        Mail::to($this->user->email)->send(new UpdatePassword($this->user),function ($message) {
        $message->subject('***会员修改密码');
        });

在我们真正的开始执行队列之前,我们还需要在命令行里开启队列,这样我们才能去监听队列任务的发生,并去执行

php artisan queue:work

如果你修改了队列的管理类代码,那么你还需要去重启才能重新生效

php artisan queue:restart

这里开始真正执行,dispatch用于分发队列任务,传入我们的user,这个user将用于刚刚在SendPixiaxiaEmail的construct中的获取的user,紧接着delay用于延迟分发,这里我就延迟了一分钟,记得引入cabbon类哦

 $data = SendPixiaxiaEmail::dispatch(User::where(['id'=>30996])->first())->delay(Carbon::now()->addMinutes(1));

注意:此时的队列虽然开启了,但是并没有持久化,也就是说当你关掉命令行时就会停止,那么我们需要linux中的一些守护进程的工具帮我们守护,以下是我看到的一个例子,可以参考
https://www.cnblogs.com/chancy/p/7644061.html

相关文章

  • Laravel队列以及发送邮件

    1. 配置邮件 请查看这篇文章 2. 发送邮件 创建mailable对象,实际上就是一个用于管理发送邮件模板以及标...

  • laravel 队列的使用

    laravel version: 5.4.* 为什么有使用队列? 使用队列可以将某些耗时任务(比如发送邮件)延迟执...

  • Laravel 队列queue(database篇)

    队列 Laravel队列服务为各种不同的后台队列提供统一的API允许推迟耗时任务(例如发送邮件)的执行,从而大幅提...

  • laravel 定时任务通过队列发送邮件

    关于laravel发送邮件,请先参考我的另一片文章:laravel sendcloud发送邮件,再继续往下看。 1...

  • laravel 定时任务秒级执行

    定时任务的用法请参考:laravel 定时任务通过队列发送邮件 只需在自定义的someCmd.php文件的hand...

  • laravel 发送邮件

    一.在qq邮箱配置 二.配置文件1.配置laravel .env文件 2.配置laravel config/mai...

  • Laravel 邮件发送

    一、QQ邮箱配置 laravel自带SMTP邮件配置和遇到的坑 laravel自带SwiftMailer库,集成了...

  • Laravel 发送邮件(适用于生产环境)

    Laravel 发送邮件(适用于生产环境) 1. 应用场景 系统邮件发送量较小,暂时不需要另外购买邮件发送服务。 ...

  • Laravel 5.3 --通知

    1、简介 除了支持发送邮件之外,Laravel还支持通过多种传输通道发送通知,这些通道包括邮件、短信(通过Nexm...

  • laravel 自带消息notification

    1、简介 除了支持发送邮件之外,Laravel还支持通过多种传输通道发送通知,这些通道包括邮件、短信(通过Nexm...

网友评论

    本文标题:Laravel队列以及发送邮件

    本文链接:https://www.haomeiwen.com/subject/pfobuftx.html