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 类商品秒杀计时实现代码
May 05 PHP
php imagecreatetruecolor 创建高清和透明图片代码小结
May 15 PHP
PHP print类函数使用总结
Jun 25 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
Yii分页用法实例详解
Dec 04 PHP
php多次include后导致全局变量global失效的解决方法
Feb 28 PHP
浅谈json_encode用法
Mar 05 PHP
php获取json数据所有的节点路径
May 17 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 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
PHP类中Static方法效率测试代码
2010/10/17 PHP
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
php代码检查代理ip的有效性
2016/08/19 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
JavaScript自定义方法实现trim()、Ltrim()、Rtrim()的功能
2013/11/03 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
AngularJS初始化静态模板详解
2016/01/14 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
微信小程序实现打开并下载服务器上面的pdf文件到手机
2019/09/20 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
Python的装饰器用法学习笔记
2016/06/24 Python
Python实现登录接口的示例代码
2017/07/21 Python
解决Pandas to_json()中文乱码,转化为json数组的问题
2018/05/10 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
2018/08/02 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
Pycharm简单使用教程(入门小结)
2019/07/04 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
Python使用Pandas库常见操作详解
2020/01/16 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
python针对Oracle常见查询操作实例分析
2020/04/30 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
经典C++面试题一
2016/11/06 面试题
中专毕业生自我鉴定
2013/11/21 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
繁星春水读书笔记
2015/06/30 职场文书
深度学习详解之初试机器学习
2021/04/14 Python
go xorm框架的使用
2021/05/22 Golang