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 相关文章推荐
URL Rewrite的设置方法
Jan 02 PHP
LotusPhp笔记之:Cookie组件的使用详解
May 06 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
php实现过滤表单提交中html标签的方法
Oct 17 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
php+ajax实现文章自动保存的方法
Dec 30 PHP
使用PHPCMS搭建wap手机网站
Sep 20 PHP
PHP与Ajax相结合实现登录验证小Demo
Mar 16 PHP
php数组冒泡排序算法实例
May 06 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
PHP区块查询实现方法分析
May 12 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读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
php json_encode()函数返回json数据实例代码
2014/10/10 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
JS获取鼠标坐标位置实例分析
2016/01/20 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
2016/08/19 Javascript
利用jquery去掉时光轴头尾部线条的方法实例
2017/06/16 jQuery
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
浅析Python中signal包的使用
2015/11/13 Python
python数据结构学习之实现线性表的顺序
2018/09/28 Python
Python利用FFT进行简单滤波的实现
2020/02/26 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
详解CSS3 弹性布局快速入门
2019/06/06 HTML / CSS
HTML5的新特性(1)
2016/03/03 HTML / CSS
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
西安交大自主招生自荐信
2014/01/27 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
小学生九一八纪念日83周年演讲稿500字
2014/09/17 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
Python实现生活常识解答机器人
2021/06/28 Python
用php如何解决大文件分片上传问题
2021/07/07 PHP