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 相关文章推荐
给apache2.2加上mod_encoding模块後 php5.2.0 处理url出现bug
Apr 12 PHP
DOM XPATH获取img src值的query
Sep 23 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
ThinkPHP之A方法实例讲解
Jun 20 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
PHP中key和current,next的联合运用实例分析
Mar 29 PHP
php简单的上传类分享
May 15 PHP
PHP仿微信多图片预览上传实例代码
Sep 13 PHP
浅谈socket同步和异步、阻塞和非阻塞、I/O模型
Dec 15 PHP
PHP对象实例化单例方法
Jan 19 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 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 cache类代码(php数据缓存类)
2010/04/15 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
javascript 常用方法总结
2009/06/03 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
nodejs通过phantomjs实现下载网页
2015/05/04 NodeJs
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
Html中 IFrame的用法及注意点
2016/12/22 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
vue实现长图垂直居上 vue实现短图垂直居中
2017/10/18 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
python中文乱码的解决方法
2013/11/04 Python
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
浅析Python编写函数装饰器
2016/03/18 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
对Django url的几种使用方式详解
2019/08/06 Python
python内存管理机制原理详解
2019/08/12 Python
python3实现往mysql中插入datetime类型的数据
2020/03/02 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
python 如何在测试中使用 Mock
2021/03/01 Python
毕业生简历自我评价范文
2014/04/09 职场文书
代理协议书
2014/04/22 职场文书
国际商务专业毕业生自我鉴定2014
2014/09/27 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
单位委托函范文
2015/01/29 职场文书
新员工入职感想
2015/08/07 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
Pandas-DataFrame知识点汇总
2022/03/16 Python
利用For循环遍历Python字典的三种方法实例
2022/03/25 Python