laravel5.6 框架邮件队列database驱动简单demo示例


Posted in PHP onJanuary 26, 2020

本文实例讲述了laravel5.6 框架邮件队列database驱动。分享给大家供大家参考,具体如下:

一: 邮件初始参数配置

配置 .env  (demo示例是163邮箱,开启POP3和SMTP服务,获取授权密码)

MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=465
MAIL_USERNAME=你的163邮箱地址
MAIL_PASSWORD=你的163邮箱地址对应的授权密码(不是登录密码)
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=你的163邮箱地址

修改 .env 中的 QUEUE_DRIVER 值   (配置文件 config/queue.php  默认是同步'sync', demo配置'database'驱动)

QUEUE_DRIVER=database

二: 数据库建表

//队列任务表
php artisan queue:table
//任务执行失败表
php artisan queue:failed-table
//执行数据库迁移
php artisan migrate

三: 生成任务类

php artisan make:job SendEmail

生成之后,在handle方法中处理发送队列邮件

<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Mail;
class SendEmail implements ShouldQueue
{
  use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  private $email;
  private $content;
  private $subject;
  /**
   * Create a new job instance.
   *
   * @return void
   */
  public function __construct( $email, $content, $subject)
  {
    $this->email = $email;
    $this->content = $content;
    $this->subject = $subject;
  }
  /**
   * Execute the job.
   *
   * @return void
   */
  public function handle()
  {
    $email = $this->email;
    $subject = $this->subject;
    Mail::send(
      'admin.emails.test',
      ['content' => $this->content],
      function ($message) use($email, $subject) {
        $message->to($email)->subject($subject);
      }
    );
    // Mail::failures() 返回的错误邮件信息,判断是否发送成功. (无错误信息,返回空数组)
    if(empty(Mail::failures())){
      dd('发送成功');
    }else{
      dd('发送失败');
    }
  }
}

四: 对应邮件发送的控制器,任务加到队列中

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Jobs\SendEmail;
/**
 * Description of BookedController
 */
class BookedController extends Controller {
  public function queueSend()
  {
    //邮件发送demo数据
    $data =[
      0=>[
        'email'=>'XXXXXX@qq.com',
        'content'=>'Hello World One',
        'subject'=>'测试标题一',
      ],
      1=>[
        'email'=>'XXXXXX@qq.com',
        'content'=>'Hello World Two',
        'subject'=>'测试标题二',
      ]
    ];
    foreach ($data as $item){
      //数据循环,插入表jobs中,队列初始化数据
      dispatch(new SendEmail($item['email'],$item['content'],$item['subject']));
    }
  }
}

五:  执行队列里的任务

//默认只执行一次队列请求,当请求执行完成后就终止
php artisan queue:work
//监听队列请求,只要运行着,就能一直接受请求,除非手动终止
php artisan queue:listen

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php实现用户在线时间统计详解
Oct 08 PHP
thinkphp3查询mssql数据库乱码解决方法分享
Feb 11 PHP
thinkphp浏览历史功能实现方法
Oct 29 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
Sep 19 PHP
PHP实现的多维数组排序算法分析
Feb 10 PHP
PHP DB 数据库连接类定义与用法示例
Mar 11 PHP
Yii2.0框架模型多表关联查询示例
Jul 18 PHP
php实现session共享的实例方法
Sep 19 PHP
TP5框架安全机制实例分析
Apr 05 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 PHP
详解PHP用mb_string处理windows中文字符
May 26 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 #PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 #PHP
Laravel框架自定义分页样式操作示例
Jan 26 #PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
Jan 26 #PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 #PHP
yii2.0框架场景的简单使用示例
Jan 25 #PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 #PHP
You might like
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
百度地图经纬度转换到腾讯地图/Google 对应的经纬度
2015/08/28 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
基于javascript的JSON格式页面展示美化方法
2014/07/02 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
[49:41]NB vs NAVI Supermajor小组赛A组 BO3 第一场 6.2
2018/06/03 DOTA
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
Python文件和流(实例讲解)
2017/09/12 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
python构造IP报文实例
2020/05/05 Python
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
小学语文教学反思
2014/02/10 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
老公爱的承诺书
2014/03/31 职场文书
怎样拟定创业计划书
2014/05/01 职场文书
新教师岗前培训方案
2014/06/05 职场文书
论文答谢词
2015/01/20 职场文书
张思德观后感
2015/06/09 职场文书
太空授课观后感
2015/06/17 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技