• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    laravel5.6 框架邮件队列database驱动简单demo示例

    本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

    您可能感兴趣的文章:
    • Laravel使用Queue队列的技巧汇总
    • Docker部署Laravel应用实现队列&任务调度
    • Laravel 6 将新增为指定队列任务设置中间件的功能
    • Laravel 队列使用的实现
    • Laravel框架队列原理与用法分析
    • Laravel中为什么不使用blpop取队列详析
    • 关于 Laravel Redis 多个进程同时取队列问题详解
    • 源码分析 Laravel 重复执行同一个队列任务的原因
    • Laravel使用消息队列需要注意的一些问题
    • Laravel中利用队列发送邮件的方法示例
    • 浅谈Laravel队列实现原理解决问题记录
    • 浅析Laravel5中队列的配置及使用
    • PHP的Laravel框架中使用消息队列queue及异步队列的方法
    • Laravel 4.2 中队列服务(queue)使用感受
    • Laravel框架中队列和工作(Queues、Jobs)操作实例详解
    上一篇:laravel5.6框架操作数据curd写法(查询构建器)实例分析
    下一篇:PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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