2017-09-27 14 views
2

私はlaravel 5.4で構築されたWebアプリケーションを持っています。 今、私はすべてのユーザーにコミュニケーションを送る関数を開発しました。キュー内のメールが送信されているかどうかを知るLaravel 5.4

だから私はクラスMailableを作成しています

class Comunication extends Mailable 
{ 
    use Queueable, SerializesModels; 

    private $data; 
    private $recipient; 
    private $fromR; 
    private $subjectR; 
    private $template; 

    public function __construct($template, $data,$recipient,$from,$subject) 
    { 
     $this->data = $data; 
     $this->recipient = $recipient; 
     $this->fromR = $from; 
     $this->subjectR = $subject; 
     $this->viewData = $data; 
     $this->template = $template; 
    } 
    public function build() 
    { 
     return $this->from($this->fromR)->to($this->recipient)->subject($this->subjectR)->view($this->template, $this->viewData); 
    } 

そして、私のコントローラで、私は機能を持っているが、同様に送信します

foreach ($users as $user){ 
    Mail::queue(new Comunication('mail.comunication', array("user"=>"test"), $user->email, '[email protected]', "subject")); 
} 

そして、それは動作し、DBに私のテーブルのジョブにメールを入れて

PHPの職人キュー:聞く

私は実行可能チェック、であるならば、私は知っているだろう

メールが実際に送信されたか、失敗したジョブで終了した場合。

sendComunicationEmail仕事をし、ジョブに私が作成したMailableクラスを呼び出す:私は

PHPの職人のメイクでJOBを作成しました :

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

    private $data; 
    private $recipient; 
    private $fromR; 
    private $subjectR; 
    private $template; 

    public function __construct($template, $data, $recipient, $from, $subject) 
    { 
     // 
     $this->data = $data; 
     $this->recipient = $recipient; 
     $this->fromR = $from; 
     $this->subjectR = $subject; 
     $this->viewData = $data; 
     $this->template = $template; 
    } 

    /** 
    * Execute the job. 
    * 
    * @return void 
    */ 
    public function handle() 
    { 
     //new mailable classe created 
     Mail::send(new Comunication($this->template, $this->data, $this->recipient, $this->fromR, $this->subjectR)); 
    } 
    public function failed() 
    { 
     // Called when the job is failing... 
     Log::alert('error in queue mail'); 

    } 
} 

答えて

0

は私が解決策を見つけました

私のコントローラには現在、次のものがあります。

foreach ($users as $user){ 
    dispatch(new ComunicationJobEmail('view', array("data"=>""), $user->email, '[email protected]', "subject")); 
} 
関連する問題