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'); } }