Laravel 4.2 メール

設定

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

APIドライバー

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

"guzzlehttp/guzzle": "~4.0"

Mailgunドライバー

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

'mailgun' => array(
    'domain' => 'your-mailgun-domain',
    'secret' => 'your-mailgun-key',
),

Mandrillドライバー

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

'mandrill' => array(
    'secret' => 'your-mandrill-key',
),

ログドライバー

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

基本的な使い方

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

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

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

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

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

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

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

Mail::send(array('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, array('as' => $display, 'mime' => $mime));

注目: 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>

$message変数はいつもMailクラスによりメールビューに渡されることに注目してください。

キュー使用メール

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

メール送信はアプリケーションのレスポンスをとても遅くしてしまうため、多くの開発者はメールメッセージをバックグラウンドでキュー送信するようにしています。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メソッドを呼び出すか、app/config/mail.php設定ファイルでpretendオプションをtrueにしてください。pretendモードの場合、受取人に向け送信する代わりに、アプリケーションのログファイルに書き込まれます。

メールのPretendモードを有効にする。

Mail::pretend();

ドキュメント章別ページ

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)へ移動

その他

?

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