Laravel 5.0 メール

設定

Laravelは人気の高い、SwiftMailerライブラリーのクリーンでシンプルなAPIを提供しています。メールの設定ファイルはconfig/mail.phpです。SMTPホスト、ポート、認証、更にライブラリーが送信するメッセージ全部に対するグローバルな送信元(from)アドレスなどを設定するオプションが用意されています。好きなSMTPサーバーをご利用できます。メールの送信にPHPのmail機能を使用したい場合は、設定ファイルのdrivermailに変更してください。sendmailドライバーも使用できます。

APIドライバー

Laravelではさらに、MailgunとMandrillのHTTP APIドライバーを用意しています。これらはシンプルで、大抵の場合にSMTPサーバーよりも早いAPIを提供しています。両方のドライバー共に、Guzzle 5 HTTPライブラリーをアプリケーションにインストールする必要があります。以下の行をcomposer.jsonファイルに追加し、Guzzle 5をプロジェクトに追加してください。

"guzzlehttp/guzzle": "~5.0"

Mailgunドライバー

Mailgunドライバーを使用するには、config/mail.php設定ファイル中のdriverオプションをmailgunに設定してください。次に、config/services.php設定ファイルが、プロジェクトに存在していなければ作成してください。中身を以下のオプションにしてください。

'mailgun' => [
    'domain' => 'your-mailgun-domain',
    'secret' => 'your-mailgun-key',
],

Mandrillドライバー

Mandrillドライバーを使用するには、config/mail.php設定ファイル中のdriverオプションを、mandrillに設定してください。次に、config/services.php設定ファイルが、プロジェクトに存在していなければ作成してください。中身を以下のオプションにしてください。

'mandrill' => [
    'secret' => 'your-mandrill-key',
],

ログドライバー

config/mail.php設定ファイルのdriverオプションをlogに設定すると、全てのメールがログファイルに書き込まれます。そして、どの受取人に対しでも、実際には送信されなくなります。このドライバーは主に、素早くローカルでデバッグしたいときや、内容を確認する場合に便利です。

基本的な使い方

Mail::sendメソッドは、メールメッセージを送信するために使用されます。

Mail::send('emails.welcome', ['key' => 'value'], function($message)
{
    $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});

sendメソッドに渡される最初の引数は、メールの本文に使用されるビューの名前です。2つ目の引数はビューに渡されるデーターで、ほとんどの場合連想配列です。ビュー中、$keyにより、データーのアイテムを参照できます。3つ目はクロージャーで、メッセージに様々なオプションを指定するために使用します。

注目:$message変数はいつでもメールのビューに渡され、埋め込まれます。ですから、この変数を渡す必要はありません。

HTMLビューに加え、プレーンテキストビューを指定することもできます。

Mail::send(['html.view', 'text.view'], $data, $callback);

もしくは'html'か'text'をキーに使用し、片方のタイプだけのビューを指定することも可能です。

Mail::send(['text' => 'view'], $data, $callback);

メールにカーボンコピーや添付ファイルなどのオプションも指定できます。

Mail::send('emails.welcome', $data, function($message)
{
    $message->from('us@example.com', 'Laravel');

    $message->to('foo@example.com')->cc('bar@example.com');

    $message->attach($pathToFile);
});

添付ファイルをメッセージに付ける場合は、MIMEタイプと表示名のどちらか、もしくは両方を指定することもできます。

$message->attach($pathToFile, ['as' => $display, 'mime' => $mime]);

ビューを使わず、シンプルに文字列でメールする必要があるなら、rawメソッドを使ってください。

Mail::raw('Text to e-mail', function($message)
{
    $message->from('us@example.com', 'Laravel');

    $message->to('foo@example.com')->cc('bar@example.com');
});

注目:Mail::sendクロージャーに渡されるメッセージのインスタンスは、SwiftMailer messageクラスを拡張しています。ですからメッセージを作成するため、このクラスのメソッドを呼び出すこともできます。

インラインの埋め込み

メールに画像をインラインで埋め込むことは典型的な厄介者です。しかしLaravelは画像をメールに付け、最適なCIDを得る便利な方法を提供しています。

メールのビューに画像を埋め込む

<body>
    Here is an image:

    <img src="<?php echo $message->embed($pathToFile); ?>">
</body>

メールのビューにロウ(raw)・データーを埋め込む

<body>
    Here is an image from raw data:

    <img src="<?php echo $message->embedData($data, $name); ?>">
</body>

注目してもらいたいのは、Mailファサードにより、いつでも$message変数はメールのビューに渡されます。

キュー使用メール

メールメッセージをキューイングする

メール送信はアプリケーションのレスポンスをとても遅くしてしまうため、多くの開発者はメールメッセージをバックグラウンドでキュー送信するようにしています。Laravelでは組み込みの共通キューAPIを使用することで、簡単に取り扱えるようになっています。メールメッセージをキューに投入するには、Mailファサードのqueueメソッドを使用するだけです。

Mail::queue('emails.welcome', $data, function($message)
{
    $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});

もしくはlaterメソッドを使用し、メールを送信するまでの遅延秒数を指定することも可能です。

Mail::later(5, 'emails.welcome', $data, function($message)
{
    $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});

またメッセージを登録する特定のキューか「チューブ」をqueueOnlaterOnメソッドを使用し、指定することも可能です。

Mail::queueOn('queue-name', 'emails.welcome', $data, function($message)
{
    $message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});

メールとローカル開発

メールを送信するアプリケーションを開発する場合、ローカルもしくは開発環境からのメッセージ送信を無効にするほうが好ましいでしょう。そのためには、Mail::pretendメソッドを呼び出すか、config/mail.php設定ファイルでpretendオプションをtrueにしてください。pretendモードの場合、受取人に向け送信する代わりに、アプリケーションのログファイルに書き込まれます。

テストメールのビューを確認したい場合は、MailTrapなどのサービスの使用を考慮してください。

ドキュメント章別ページ

Artisan CLI

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる