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 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
php学习之简单计算器实现代码
Jun 09 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
May 29 PHP
php中隐形字符65279(utf-8的BOM头)问题
Aug 16 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
Nov 24 PHP
php表单敏感字符过滤类
Dec 08 PHP
Apache PHP MySql安装配置图文教程
Aug 27 PHP
PHP编程中的Session阻塞问题与解决方法分析
Aug 07 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
详细解读php的命名空间(二)
Feb 21 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
Nov 13 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 分页类 扩展代码
2009/06/11 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
php输出表格的实现代码(修正版)
2010/12/29 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
基于Jquery的标签智能验证实现代码
2010/12/27 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
JavaScript实现的类字典插入或更新方法实例
2015/07/10 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
微信小程序 时间格式化(util.formatTime(new Date))详解
2016/11/16 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
解决vue2.0 element-ui中el-upload的before-upload方法返回false时submit()不生效问题
2018/08/24 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python生成数字图片代码分享
2017/10/31 Python
Python 快速实现CLI 应用程序的脚手架
2017/12/05 Python
Python可变参数*args和**kwargs用法实例小结
2018/04/27 Python
python查看模块安装位置的方法
2018/10/16 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
你懂得怎么写自荐信吗?
2013/12/27 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
2015最新婚礼主持词
2015/06/30 职场文书
OpenCV图像变换之傅里叶变换的一些应用
2021/07/26 Python
python分分钟绘制精美地图海报
2022/02/15 Python