laravel5.6 邮件队列database驱动简单demo
一: 邮件初始参数配置
配置 .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
laravel5.6 邮件队列database驱动简单demo的更多相关文章
- Laravel5.5 邮件驱动使用 SMTP 驱动实现邮件发送
laravel5.5 邮件驱动 Laravel 支持多种邮件驱动,包括 smtp.Mailgun.Maildrill.Amazon SES.mail 和 sendmail.Mailgun . Mail ...
- MangoDB的C#Driver驱动简单例子
以下是本人学习C#Driver驱动简单的学习例子.GridFS的增删查操作 和 表的增删查改操作. public class MongoServerHelper { public static str ...
- laravel5.5 延时队列的使用
队列这个知识相对比较冷门,因为平时的CURD基本用不到这个知识,今天用到了,所以就写个博客记录一下吧. 首先你得清楚要用什么驱动,除了database队列驱动(选择database驱动要php art ...
- Powershell检查邮件队列设置阈值,通过html形式进行邮件告警
为了完善公司的整体邮件质量,博主通过zabbix监控了exchange的所有微软推荐项目,并写了很多powershell来辅佐, 旨在更大程度上提高整体的邮件性能 这篇文章主要是讲通过powershe ...
- Asp.Net Core 快速邮件队列设计与实现
发送邮件几乎是软件系统中必不可少的功能,在Asp.Net Core 中我们可以使用MailKit发送邮件,MailKit发送邮件比较简单,网上有许多可以参考的文章,但是应该注意附件名长度,和附件名不能 ...
- PHP多进程学习(一)__来初步了解一下PHP多进程及简单demo
php是一门单进程弱类型的语言,PHP处理多并发主要是依赖服务器或PHP-FPM的多进程及它们进程的复用,多进程的作用优点大家可以去网上了解,PHP实现多进程在实际项目中意义也是不容小觑的.比如:日常 ...
- Django实战(一)之简单Demo
菜鸟教程上Django安装可供参考: 参考链接: http://www.runoob.com/django/django-install.html 菜鸟教程上如果不行的话,下面博客网址可以供参考 Li ...
- 在cengos中安装zabbix server/agent, 并创建一个简单demo
添加zabbix更新源 rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch ...
- 设计模式之单例模式的简单demo
/* * 设计模式之单例模式的简单demo */ class Single { /* * 创建一个本类对象. * 和get/set方法思想一样,类不能直接调用对象 * 所以用private限制权限 * ...
随机推荐
- Python内置函数compile
英文文档: compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) Compile the source i ...
- MyBatis框架 课程笔记
MyBatis框架 课程笔记 第1章 MyBatis简介 1.1 MyBatis历史 1)MyBatis是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Softw ...
- 使用before和after双伪元素清除浮动
使用方法: .clearfix:before,.clearfix:after { content:"."; display:table; } .clearfix:after { c ...
- 08: mysql主从原理
1.1 mysql主从同步 参考博客:https://www.cnblogs.com/kevingrace/p/6256603.html 1.mysql主从同步(复制)概念 1. 将Mysql某一 ...
- CSS 毛玻璃效果
效果图: <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <met ...
- [VINS]IMU与相机之间旋转量的标定
VINS-Mono[1]中IMU-Camera外参旋转量\(R_b^c\)的计算方法在他们实验室发的之前的论文有详细讲解[2].视觉利用匹配特征点中的基础矩阵求出相机坐标系下两帧的旋转量\(R_{c_ ...
- 【学习总结】快速上手Linux玩转典型应用-第4章-准备工作
课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 准备工作一 2. 准备工作二 ===================================================== ...
- Solr7.2.1环境搭建和配置ik中文分词器
solr7.2.1环境搭建和配置ik中文分词器 安装环境:Jdk 1.8. windows 10 安装包准备: solr 各种版本集合下载:http://archive.apache.org/dist ...
- 分页控件SSTab
一.分页控件SSTab概述1.作用:采用分页形式查询或编辑数据表中数据.2.添加到控件箱菜单命令:工程 | 部件,选择:Microsoft Tabbed Dialog Control 6.0 (SP6 ...
- linux ab 压测
https://www.cnblogs.com/shenshangzz/p/8340640.html https://www.cnblogs.com/shenshangzz/p/8340640.htm ...