LaravelのQueueとJobを利用してメール送信をするZennYUZU🛫LaravelのQueueとJobを利用してメール送信をする2021/06/17に公開・約4,600字ツイートLaravelPHP#queue#jobtechはじめに今回、実務で初めてLaravelのJobとQueueでメールの送信機能を実装し、その結果をAjaxで受け取るという実装をしました。知ることも多く、勉強になったのでまとめていきたいと思います。「キュー」とはキュー済みのジョブのスタック、もしくは積み重ねのことです。queue接続ファイルのqueue属性を含んでいる、各接続設定例に注目してください。ジョブがディスパッチされ、指定された接続へ送られた時にのデフォルトキューです。言い換えれば、どのキューへディスパッチするのか明確に定義していないジョブをディスパッチすると、そのジョブは接続設定のqueue属性で定義したキューへ送られます。...よくわかりません。そこでもう少し調べてみると、わかりやすい記事を発見!LaravelでQueueとJobを使ってみる基礎基礎メモ簡単に説明すると、jobとQueueは処理を非同期で行うことができる機能です。非同期で処理を行うことができると、どういったメリットが考えられるのでしょうか。わかりやすい例だと、会員登録を行った際に、よくメールが送られてくる機能があると思います。この時に、非同期で行っていない場合だと、ユーザーはメールの送信処理が完了するまで画面を動かすことができません。一方で、非同期で処理を行なった場合は、メール送信をサーバー側で行なっている間に、フロント側では「登録完了」ページへ推移することができるので、ユーザーにとってメリットが大きいと言えます。今回はすでにLaravelのプロジェクトは用意されているものとします。機能としては、IDとPWを登録し、そのデータがメールで送られてくる処理を書いていきたいと思います。IDとPWを登録する画面を作っていきます。view('register');});とてもシンプルな画面ができました。送信後に推移する画面も作成しておきます。<title>Fin</title></head><body><h1>登録が完了しました!</h1></body></html>サーバー側の実装まず、membersテーブルを用意します。}続いて、Controllerを作成していきます。}先ほどはweb.phpにてregister.balde.phpの画面を返すようにしましたが、Controllerに書き換えています。'App\Http\Controllers\MemberController@store')->name('register');そして、register.blade.phpのformタグを書き換えます。}}">省略</form>これで、簡単な会員登録フォームは完成です。メール送信処理をかく続いて、メールを送信するための処理を書いていきます。ローカルでは実際にメールを送ることができないため、今回はMailTrapを利用します。MailTrapの利用方法は以前記事に書いたので、こちらをご参照ください。}mail.blade.php会員登録が完了しました。}}メールの送信処理に関しては詳しい説明は割愛します。RegistrationMail.phpではIDとPWが入った$dataをメール本文で利用できるようにwithで渡し、メール本文はmail.blade.phpに書いているので、viewの欄はmailと指定しています。Jobに処理を書いていくやっと今回の本題であるJobの出番です。.envのQUEUE_CONNECTIONを以下のように変更します。migrateこれで、jobsテーブルが作成されました。続いて、ジョブクラスを作成します。SendMailそして、新しく生成されたジョブを以下のように編集します。}あとはコントローラーのstoreメソッドにJobを使用する記述を追加します。}これで、フォームから入力した値を、Jobを通してメールで送ることができました!さいごに今回、初めてJobとQueueを利用してみましたが、思ったよりも簡単に実装を行うことができました。LaravelとVueを触ってます目次はじめにJobとQueueとはフロント画面の実装サーバー側の実装メール送信処理をかくJobに処理を書いていくさいごにZennエンジニアのための情報共有コミュニティAboutZennについて運営会社お知らせ・リリースGuides使い方Publicationよくある質問LinksTwitterGitHubメディアキットLegal利用規約プライバシーポリシ。