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 相关文章推荐
使用Apache的rewrite技术
Jun 22 PHP
PHP脚本数据库功能详解(中)
Oct 09 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
使用php验证复选框有效性的示例
Nov 13 PHP
PHP进程同步代码实例
Feb 12 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
jquery+thinkphp实现跨域抓取数据的方法
Oct 15 PHP
PHP Post获取不到非表单数据的问题解决办法
Feb 27 PHP
php图片裁剪函数
Oct 31 PHP
centos7上编译安装php7以php-fpm方式连接apache
Nov 08 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 PHP
PHP执行普通shell命令流程解析
Aug 24 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
全国FM电台频率大全 - 24 贵州省
2020/03/11 无线电
php实现的漂亮分页方法
2014/04/17 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
2018/07/21 PHP
实例讲解php实现多线程
2019/01/27 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
JavaScript语句可以不以;结尾的烦恼
2007/03/08 Javascript
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
js select option对象小结
2013/12/20 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
Vue开发环境跨域访问问题
2020/01/22 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
印度在线杂货店:bigbasket
2018/08/23 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
高三自我评价
2014/02/01 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
先进工作者推荐材料
2014/12/23 职场文书
学习商务礼仪心得体会
2016/01/22 职场文书
2016教师读书思廉心得体会
2016/01/23 职场文书
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js