準備するファイル

  • .env
  • routes/web.php
  • config/mail.php
  • App/Mail/Contacted.php
  • App/Http/Controllers/ContactController.php

設定

最初にメールの設定を行います。あまり変化がないのでさくっといきます。

.envMAIL_で始まるenvキーがあります。これが、メールに関する設定のenvキーになります。

envファイルのメール設定

メールの設定ファイルであるconfig/mail.phpで使用されます。

ちなみに、driverlogを指定すると実際には送信されずにlogファイルにその内容が記録されます。

送信処理

ここからはメールを送信する処理を記述します。簡単なお問い合わせフォームで入力された値をビューに埋め込んでメール送信するという処理です。

まずは、ContactControllerクラスを作成し、2つのルートを設定します。

$ php artisan make:controller ContactController

そして、routes/web.phpに2つのルーティングを、ContactControllerにそれぞれの処理を記述しましょう。

これまでは、クロージャでロジックを直接いていたので再利用しづらいものでした。しかし今回からはクロージャに書いていた部分をmailableを継承したクラスで管理できるようになったので、再利用性が高まりました。

なので、コントローラーでやることはそのクラスをMailクラスのsend()の引数に指定するだけです。また、フォームで入力した値もちゃんと渡しましょう。

次に、引数で指定したクラスを作成しましょう。

$ php artisan make:mail classname

これで簡単に作成できます。今回はContactedクラスを作成して処理を書いていきましょう。

Mailableクラスを継承したクラスで実装するメソッドはbuild()のみです。簡単な例ですが、build()は以下のようになります。

  • view:ビュー(HTML)の指定
  • subject:件名
  • with:ビューで使う変数の割り当て

注意しないといけないのが、'message'という変数に割り当てることはできないということです。 内部ですでに使用していますので絶対に使わないようにしましょう。

変数の割り当てはview()の第2引数でも可能です。

まとめ

以上が簡単な使い方になります。再利用しなくても可読性が抜群によくなりますので積極的に使うことをお勧めします。