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 相关文章推荐
BBS(php &amp; mysql)完整版(四)
Oct 09 PHP
php中计算时间差的几种方法
Dec 31 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
phpmyadmin config.inc.php配置示例
Aug 27 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
PHP实现伪静态方法汇总
Jan 13 PHP
Smarty模板常见的简单应用分析
Nov 15 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
PHP实现验证码校验功能
Nov 16 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 PHP
TP5框架实现签到功能的方法分析
Apr 05 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 cookie 登录验证示例代码
2009/03/16 PHP
php支付宝手机网页支付类实例
2015/03/04 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
用javascript实现自定义标签
2007/05/08 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
JavaScript构造函数详解
2015/12/27 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
js实现表格筛选功能
2017/01/18 Javascript
vue init webpack 建vue项目报错的解决方法
2018/09/29 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
浅谈python多线程和队列管理shell程序
2015/08/04 Python
用python实现百度翻译的示例代码
2018/03/09 Python
python 实现登录网页的操作方法
2018/05/11 Python
python3写的简单本地文件上传服务器实例
2018/06/04 Python
Python中print函数简单使用总结
2019/08/05 Python
TensorFlow MNIST手写数据集的实现方法
2020/02/05 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
职业生涯规划怎么写
2013/12/29 职场文书
幼儿园元旦活动感言
2014/03/02 职场文书
科技之星事迹材料
2014/06/02 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
建议书范文
2015/02/05 职场文书
公司门卫岗位职责
2015/04/13 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers