Laravel 5.6 ではメール送信機能がデフォルトでサービスとして組み込まれています。簡単にメールを送信することができます。
設定
メールの設定に関しては、以前に書いたメールの環境設定を参照してください。
Mailable の作成
artisan コマンドで mailable を作成します
php artisan make:mail Hello
app/Mail/Hello.php が作成されるので以下のように修正します。
<?php // app/Mail/Hello.php namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Queue\ShouldQueue; class Hello extends Mailable { use Queueable, SerializesModels; protected $name; public function __construct($name) { $this->name = $name; } public function build() { return $this->from('sender@example.com') ->view('emails.hello') ->with([ 'name' => $this->name ]); } }
- __construct() でメールを編集するために必要な情報を受け取ります。
- build() では VIEW を使ってメールを構築しています。
- with() で必要な情報を VIEW に渡します。
- from() は省略すると .env で設定した MAIL_FROM_ADDRESS が使用されます。
View
メールの本文で使用するビューを作成します。
{{-- resources/views/emails/hello.blade.php --}} ようこそ、{{ $name }} さん<br> いっしょに Laravel で開発しましょう。
メールの送信
この例では、クロージャーを使ったルーティングでメールを送信します。
<?php // routes/web.php use App\Mail\Hello; Route::get('/hello/{name?}', function ($name = 'ゲスト') { Mail::to('reciver@example.com') ->send(new Hello($name)); return "Hello メールを ${name} さんに送りました。"; });
Mailファサードを使いメールを送信します。
- to() で宛先のアドレスを指定します。
- send() で送信する Mailable 作成(new)して渡します。 new するときに必要な情報を渡します。
動作確認
http://localhost:8000/hello/ホンダ にアクセスしてメールを送信してみます。
ようこそ、ホンダ さん いっしょに Laravel で開発しましょう。
上記のメールが宛先に届きました。とても簡単で超クールです。
メール送信の詳細は公式サイトのドキュメントもご覧ください。
http://laravel.com/docs/5.6/mail