系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 网络编程 > PHP编程 > 详细页面

laravel5.6 框架邮件队列database驱动简单demo示例

时间:2020-02-03来源:系统城作者:电脑系统城

本文实例讲述了laravel5.6 框架邮件队列database驱动。分享给大家供大家参考,具体如下:

一: 邮件初始参数配置

配置 .env  (demo示例是163邮箱,开启POP3和SMTP服务,获取授权密码)


 
  1. MAIL_DRIVER=smtp
  2. MAIL_HOST=smtp.163.com
  3. MAIL_PORT=465
  4. MAIL_USERNAME=你的163邮箱地址
  5. MAIL_PASSWORD=你的163邮箱地址对应的授权密码(不是登录密码)
  6. MAIL_ENCRYPTION=ssl
  7. MAIL_FROM_ADDRESS=你的163邮箱地址
  8.  

修改 .env 中的 QUEUE_DRIVER 值   (配置文件 config/queue.php  默认是同步'sync', demo配置'database'驱动)


 
  1. QUEUE_DRIVER=database
  2.  

二: 数据库建表


 
  1. //队列任务表
  2. php artisan queue:table
  3. //任务执行失败表
  4. php artisan queue:failed-table
  5. //执行数据库迁移
  6. php artisan migrate
  7.  

三: 生成任务类


 
  1. php artisan make:job SendEmail
  2.  

生成之后,在handle方法中处理发送队列邮件


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

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


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

五:  执行队列里的任务


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

更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

分享到:

相关信息

  • Thinkphp框架+Layui实现图片/文件上传功能分析

    这篇文章主要介绍了Thinkphp框架+Layui实现图片/文件上传功能,结合实例形式详细分析了Thinkphp+Layui实现图片文件上传的具体步骤、原理与相关操作技巧...

    2020-02-07

  • Laravel框架自定义分页样式操作示例

    这篇文章主要介绍了Laravel框架自定义分页样式操作,结合实例形式详细分析了laravel框架自定义分页样式的具体操作步骤、实现方法及相关注意事项,需要的朋友可以参考下...

    2020-02-03

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载