一: 邮件初始参数配置

配置 .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方法中处理发送队列邮件

 1 <?php
 2
 3 namespace App\Jobs;
 4
 5 use Illuminate\Bus\Queueable;
 6 use Illuminate\Queue\SerializesModels;
 7 use Illuminate\Queue\InteractsWithQueue;
 8 use Illuminate\Contracts\Queue\ShouldQueue;
 9 use Illuminate\Foundation\Bus\Dispatchable;
10 use Illuminate\Support\Facades\Mail;
11
12 class SendEmail implements ShouldQueue
13 {
14     use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
15
16     private  $email;
17
18     private  $content;
19
20     private  $subject;
21
22     /**
23      * Create a new job instance.
24      *
25      * @return void
26      */
27     public function __construct( $email, $content, $subject)
28     {
29         $this->email = $email;
30         $this->content = $content;
31         $this->subject = $subject;
32     }
33
34     /**
35      * Execute the job.
36      *
37      * @return void
38      */
39     public function handle()
40     {
41         $email = $this->email;
42         $subject = $this->subject;
43
44         Mail::send(
45             'admin.emails.test',
46             ['content' => $this->content],
47             function ($message) use($email, $subject) {
48                 $message->to($email)->subject($subject);
49             }
50         );
51
52         // Mail::failures() 返回的错误邮件信息,判断是否发送成功. (无错误信息,返回空数组)
53         if(empty(Mail::failures())){
54             dd('发送成功');
55         }else{
56             dd('发送失败');
57         }
58     }
59 }

 

四: 对应邮件发送的控制器,任务加到队列中

 1 <?php
 2 namespace App\Http\Controllers\Admin;
 3
 4 use App\Http\Controllers\Controller;
 5 use App\Jobs\SendEmail;
 6
 7 /**
 8  * Description of BookedController
 9  */
10 class BookedController extends Controller {
11
12     public function queueSend()
13     {
14         //邮件发送demo数据
15         $data =[
16             0=>[
17                 'email'=>'XXXXXX@qq.com',
18                 'content'=>'Hello World One',
19                 'subject'=>'测试标题一',
20             ],
21             1=>[
22                 'email'=>'XXXXXX@qq.com',
23                 'content'=>'Hello World Two',
24                 'subject'=>'测试标题二',
25             ]
26         ];
27
28         foreach ($data  as $item){
29             //数据循环,插入表jobs中,队列初始化数据
30             dispatch(new SendEmail($item['email'],$item['content'],$item['subject']));
31         }
32     }
33
34 }

五:  执行队列里的任务

//默认只执行一次队列请求,当请求执行完成后就终止
php artisan queue:work
//监听队列请求,只要运行着,就能一直接受请求,除非手动终止
php artisan queue:listen

转载于:https://www.cnblogs.com/cxx8181602/p/10177796.html

laravel5.6 邮件队列database驱动简单demo相关推荐

  1. rabbitMQ消息队列 – 面板介绍及简单demo

    首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...

  2. JavaWeb开发:从购买服务器到简单demo运行

    写这篇文章的目的: 一个是为了记录实施过程,方便自己日后查阅: 另一个是给项目组成员提供一个参考,方便他们以后搭建自己的项目环境: 当然若能帮助到更多的朋友,那就再好不过了:D 需要注意: 我本身也是 ...

  3. Asp.Net Core 快速邮件队列设计与实现

    发送邮件几乎是软件系统中必不可少的功能,在Asp.Net Core 中我们可以使用MailKit发送邮件,MailKit发送邮件比较简单,网上有许多可以参考的文章,但是应该注意附件名长度,和附件名不能 ...

  4. 新手也能看懂,消息队列其实很简单

    本文内容思维导图: 消息队列其实很简单 "RabbitMQ?""Kafka?""RocketMQ?"...在日常学习与开发过程中,我们常常听 ...

  5. ContentProvider总结与简单Demo

    一.ContentProvider简介         当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数 ...

  6. 【uboot】uboot 2020.04 DM驱动模式 -- Demo体验

    文章目录 1. 前言 2. uboot的驱动模型简介 3. U_BOOT_CMD(do_demo)分析 4. 执行命令demo list 5. 执行命令demo hello 6. 执行命令demo l ...

  7. Exchange 2013/2016邮件队列重播操作

    我们经常遇到需要将传输队列中的邮件进行重播的情况,下面简单介绍如何操作: Exchange传输邮件是先应用程序将需要发送的邮件进行一个格式转换,转换为eml格式的文本文件,然后又Pickup(分拣程序 ...

  8. EPSON机器人建立TCP/IP通讯的简单demo

    以下为我近期研究EPSON机器人通讯的经验总结,主要实现机械手接收相机发送过来的数据,从而达到对应的位置,及其简单demo. 欢迎加入知识星球[3D视觉工坊],进行交流学习.

  9. redis php异步队列,基于workerman的redis-queue实现异步邮件队列

    实验场景:页面被客户访问发送邮件通知到我的邮箱,该场景只是为了测试,下单发送邮件或者短信的场景都是一样的,为了体现出来队列的优越性,我自己封装了个邮件发送的接口,接口内部实现增加了sleep(5),纯 ...

最新文章

  1. 5.2 测试计划和估算
  2. Nginx配置反向代理与负载均衡
  3. Spring Session 的两种刷新模式-RedisFlushMode
  4. 一队老耗子,每个月都生一对小耗子,小耗子长3个月,第四个月开始变成老耗子开始生, // 假设所有耗子都不死,请问20个月之后共有多少只耗子?...
  5. overfitting(过度拟合)的概念
  6. Neo4j:找到两个纬度/经度之间的中间点
  7. vue-cli打包后怎么修改服务器地址实践有效
  8. WordPress主题 RiPro v5.0高级付费素材资源类主题
  9. 计算机作曲 研究生 武汉音乐学院,计算机音乐作曲(武汉音乐学院2021年招收攻读硕士学位研究生考试大纲)...
  10. 服务器本地文件传输,服务器 本地 文件传输
  11. 多核Cache一致性 伪共享 atomic的实现和cache相关的部分
  12. 偏最小二乘法 Partial Least Squares
  13. 求1到n之间的质数(素数)
  14. 比较好些的计算机论文题目,计算机论文题目大全(24页)-原创力文档
  15. 半小时漫画股票实战法观看记录,观看更新
  16. ie不能加载java_解决IE中页面Java无法加载的问题
  17. 用什么词典可以翻译php,PHP调用有道词典翻译API实现通译功能及代码
  18. 网络电话免费打 【推荐】
  19. SyntaxError: Missing parentheses in call to ‘print‘. Did you mean print(e)?
  20. 尚硅谷es6新特性笔记

热门文章

  1. 鸿蒙os编码_如何看待鸿蒙OS代码示例?
  2. 一些Vue开发小技巧,让你开发更便捷
  3. Spring 中注入什么意思?
  4. C - 数据结构实验之栈与队列三:后缀式求值
  5. qt种qdebug字符串_qDebug用法及中文乱码解决
  6. 电脑怎么彻底删除软件_电脑强力卸载工具,删除电脑无用软件,让电脑更加快捷顺畅...
  7. mysql写php木马_PHP一句话木马小总结与SQL语句写一句话木马
  8. Redux 中 combineReducers实现原理
  9. Java中数字格式化format方法
  10. C++中STL-队列和优先队列