zoukankan      html  css  js  c++  java
  • 监听事件 队列 邮件发送

    //调用的方法
    public function userAdd(){
    $data['username']='张三';
    $data['password']='123456';
    event(new SendEmailCodeEvent($data));
    $this->dispatch(new SendMySelfJob());
    }

    //先去生成一个队列的job 文件例如 php artisan make:job SendMailJob
    //邮件发送的队列
    <?php
    namespace AppJobs;

    use IlluminateBusQueueable;
    use IlluminateContractsQueueShouldQueue;
    use IlluminateFoundationBusDispatchable;
    use IlluminateMailMessage;
    use IlluminateQueueInteractsWithQueue;
    use IlluminateQueueSerializesModels;
    use IlluminateSupportFacadesMail;

    class SendMySelfJob implements ShouldQueue
    {
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    /**
    * Create a new job instance.
    *
    * @return void
    */
    public function __construct()
    {
    //
    }

    /**
    * Execute the job.
    *
    * @return void
    */
    public function handle()
    {
    Mail::raw('邮件发送',function (Message $message){
    $message->to('*******@qq.com');
    });
    }
    }

    //监听者
    <?php

    namespace AppListeners;

    use AppEventsSendEmailCodeEvent;
    use AppModelsmodelsexamUser;
    use IlluminateContractsQueueShouldQueue;
    use IlluminateQueueInteractsWithQueue;

    class SendEmailCodeListener
    {
    /**
    * Create the event listener.
    *
    * @return void
    */
    public function __construct()
    {
    //
    }

    /**
    * Handle the event.
    *
    * @param SendEmailCodeEvent $event
    * @return void
    */
    public function handle(SendEmailCodeEvent $event)
    {
    User::create($event->data);
    }
    }
    //发生的事件者
    <?php

    namespace AppEvents;

    use AppJobsSendMySelfJob;
    use IlluminateBroadcastingChannel;
    use IlluminateBroadcastingInteractsWithSockets;
    use IlluminateBroadcastingPresenceChannel;
    use IlluminateBroadcastingPrivateChannel;
    use IlluminateContractsBroadcastingShouldBroadcast;
    use IlluminateFoundationEventsDispatchable;
    use IlluminateQueueSerializesModels;

    class SendEmailCodeEvent
    {
    use Dispatchable, InteractsWithSockets, SerializesModels;

    /**
    * Create a new event instance.
    *
    * @return void
    */
    public $data;
    public function __construct($data)
    {
    $this->data = $data;
    }

    /**
    * Get the channels the event should broadcast on.
    *
    * @return IlluminateBroadcastingChannel|array
    */
    public function broadcastOn()
    {
    return new PrivateChannel('channel-name');
    }
    }

    然后调用就可以了
    队列的任务要手动去执行














  • 相关阅读:
    数学趣题——数字的全排列
    数学趣题——谁在说谎
    数学趣题——移数字游戏
    数学趣题——魔幻方阵
    数学趣题——亲密数
    数学趣题——数字翻译器
    数学趣题——求圆周率的近似值
    数学趣题——完全数
    Linux:CentOS 7 连接ssh方法
    Linux:CentOS 7 服务器之间ssh无密码登录、传输文件
  • 原文地址:https://www.cnblogs.com/abcdefghi123/p/14541861.html
Copyright © 2011-2022 走看看