メール送信

Laravel 5 ではメール送信機能がデフォルトでサービスとして組み込まれています。簡単にメールを送信することができます。


設定

メールの設定に関しては、以前に書いた「メールの環境設定」を参照してください。


View

まずは、メールの本文で使用されるビューを作成します。

{{-- resources/views/emails/welcome.blade.php --}}

ようこそ、{{ $name }} さん<br>

いっしょに Laravel で開発しましょう。

メールの送信

この例では、クロージャーを使ったルーティングでメールを送信します。

<?php // app/Http/routes.php

Route::get('welcome/{name?}', function($name = "ゲスト") {
    Mail::send('emails.welcome', ['name' => $name], function($message) {
        $message->to('someone@example.com')->subject('Welcome');
    });

    return "Welcome メッセージを $name に送りました";
});

Mailファサードを使い、send() メソッドでメールを送信します。

第1引数には、メールの本文で使用するビュー名を指定します。
先ほど作成した resources/views/emails/welcome.blade.php を指定します。
ビュー名は”emails.welcome”と指定します。ビュー名は”resouces/views”より下のファイルパスからディレクトリ区切りを “.” に置き換えて “.blade.php” を削除した物になります。

第2引数には、ビュー内で使用するデータを配列で指定します。

第3引数は、クロージャーでメッセージに様々なオプションを指定するために使用します。


動作確認

http://localhost:8000/sendmail/花子 にアクセスしてメールを送信してみます。

ようこそ、花子 さん

いっしょに Laravel で開発しましょう。

上記のメールが届きました。とても簡単で超クールです。

メール送信の詳細は公式サイトのドキュメントもご覧ください。
http://laravel.com/docs/5.1/mail


キューを使う

メールの送信は時間がかかる処理なので、そのままではレスポンスが遅くなってしまいます。キューにメッセージを保存して、バックグラウンドで実行することで、メールの送信完了を待つこと無く、レスポンスを返すことが出来るようになります。

    Mail::queue('emails.welcome', ['name' => $name], function($message) {
        $message->to('someone@example.com')->subject('Welcome');
    });

キューを利用するには send() メソッドの代わりに、queue() メソッドを使います。

キューを使うには別途環境設定が必要です。キューに関する詳細は以下をご覧ください。
キュー
http://laravel.com/docs/5.1/queues

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中