专栏首页无道编程关于Laravel使用队列后台发送邮件

关于Laravel使用队列后台发送邮件

今天要用到后台使用队列发送邮件,于是又稍微去了解了下Laravel中使用队列。其实在最开始用Laravel写博客【 https://www.misiyu.cn 】已经了解过了,但当时既不知其然,更不知其所以然。

代码是真的写得一团糟,当然,博客是我第一次使用Laravel写一个完整的、稍微大型点的系统。并且但是对于Laravel的很多东西都不熟悉,不理解。

到了如今手里的项目,已经是第三个了,总算感觉明白Laravel是 优雅在哪个地方了。

正题

方法一

队列形式

步骤:

  • 该方法需要先创建一个job php artisan make:job SendEmail 然后在app/jobs目录下就有一个类了,该类有一个handle方法,该方法就是具体要在队列中处理的任务逻辑
  • 创建一个邮件类 php artisan make:mail SendReportReply --markdown=mails.ReportReply 该类会在app/mail目录下有一个SendReportReply类,后面的参数--markdown=mails.ReportReply是说该邮件内容是md格式编写,由Laravel解析成html
  • 然后我们需要怎样把邮件添加到队列呢? 我们需要在Job(SendEmail)类的handle方法里面这样书写: Mail::to('admin@misiyu.cn')->send(new SendReportReply());

然后将该Job分配到队列中,队列分配、运行可以参考我的这篇文章:https://www.misiyu.cn/article/113.html ,其它就不多说了

  • 关于队列分配我想强调的一点,有两种方法,都是一样的 // 使用dispatch() 帮助函数,该函数需要一个任务类的实例对象 dispatch(new SendEmail()) // 或者 $this->dispatch() 该方法在控制器中被定义,和dispatch帮助函数的使用一致 $this->dispatch(new SendEmail())

方法二

使用Mail的门面集成函数

// 使用 Mail 门面的queue、later 邮件入队列,可以少生成任务类(就是app/Jobs)
// Mail 邮件入队列的 两个方法 queue 、later
Mail::to('admin@misiyu.cn')->queue(new SendReportReply());
// later 延迟发送邮件
Mail::to('admin@misiyu.cn')->later($when,new SendReportReply());

Mail有提供两个queue 和later,我们就直接将new SendReportReply()实例分发到队列中了,也即是说,该方法不用创建一个Job类。所以我更推荐第二种方法

如果没查文档,没百度,也许不少新手就会使用第一种方法。但其实第二种方法更简单。

另外需要说的是,Mail不止有to和queue、later方法,还可以通过链式调用「to」、「cc」、「bcc」一次性指定抄送和密送收件人。

Mail::to($request->user())
    ->cc($moreUsers)
    ->bcc($evenMoreUsers)
    ->send(new OrderShipped($order));

更多方法,可以参考中文文档(5.8):https://learnku.com/index.php/docs/laravel/5.8/mail/3920#sending-mail

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Etcd 配置详解

    对于标记 --my-flag 环境变量的格式是 ETCD_MY_FLAG。 适用于所有标记。

    用户5760343
  • Jira服务工作台路径遍历导致的敏感信息泄露漏洞分析

    本文中,作者通过对JIRA Servcie Desk应用下普通用户和管理员账户的权限测试,发现可以普通用户身份访问获取到管理员账户关键路径下的一些敏感信息,这些...

    FB客服
  • RESTful 架构基础

    REST(Representational State Transfer)架构风格是一种世界观,把信息提升为架构中的一等公民。通过 REST 可以实现系统的高性...

    zhisheng
  • 令人惊叹的前端路由原理解析和实现方式

    ? 在单页应用如此流行的今天,曾经令人惊叹的前端路由已经成为各大框架的基础标配,每个框架都提供了强大的路由功能,导致路由实现变的复杂。想要搞懂路由内部实现还是...

    腾讯技术工程官方号
  • 腾讯云服务器搭建ApachePHPMySQL环境

    对于服务器来说稳定、极速就选择 2核 4G内存配置的云服务器比较稳妥。这个配置跑网站是比较轻松无压力的。配上 avada主题,可以做出的很大气、高大上的企业网站...

    用户6580788
  • 反间谍之旅:针对伊朗的网络之战

    “土耳其轰炸美盟友”、“伊朗游轮被炸”等一系列的重大事件的发生无疑显示出中东地区紧张的局势。此时此刻的中东犹如一个桶,一不小心就会出现战争风险。不过,中东局势虽...

    FB客服
  • Etcd 运行时重配置

    1、更新:要更新 peer URL,首先,我们需要找到目标成员的ID。 etcdctl member list 6e3bd23ae5f1eae0: name...

    用户5760343
  • 腾讯云服务器上部署LNMP环境

    最近在学Laravel,同参考文章,本来只是在虚拟机上运行,但现在正好因为手上有腾讯云服务器,所以就直接拿来部署Laravel。

    用户6468650
  • CentOS 5/6下安装Axel插件加速yum下载

    axel插件是基于yum下的一个多线程下载插件,通过打开多个HTTP/FTP连接来将一个文件进行分段下载,从而达到加速下载的目的。对于下载大文件,该工具特别有用...

    孙杰
  • 300万知乎用户数据如何大规模爬取?如何做数据分析?

    很早就有采集知乎用户数据的想法,要实现这个想法,需要写一个网络爬虫(Web Spider)。因为在学习 python,正好 python 写爬虫也是极好的选择,...

    机器学习AI算法工程

扫码关注云+社区

领取腾讯云代金券