設定Configuration
Laravelは人気のあるSwiftMailerライブラリーのクリーンでシンプルなAPIを提供しています。メールの設定ファイルはconfig/mail.php
です。SMTPホスト、ポート、認証、更にライブラリーが送信するメッセージ全部に対するグローバルな送信元(from
)アドレスなどを設定するオプションが用意されています。お好きなSMTPサーバーをご利用できます。メールの送信にPHPのmail
機能を使用したい場合は、設定ファイルのdriver
をmail
に変更してください。sendmail
ドライバーも使用できます。Laravel provides a clean, simple
API over the popular
SwiftMailer[http://swiftmailer.org] library.
The mail configuration file is
config/mail.php
, and contains options
allowing you to change your SMTP host, port, and
credentials, as well as set a global
from
address for all messages delivered
by the library. You may use any SMTP server you
wish. If you wish to use the PHP mail
function to send mail, you may change the
driver
to mail
in the
configuration file. A sendmail
driver
is also available.
APIドライバーAPI Drivers
Laravelではさらに、MailgunとMandrillのHTTP
APIドライバーを用意しています。これらのAPIは大抵の場合、SMTPサーバーよりもシンプルで早いです。両方のドライバー共に、Guzzle
4
HTTPライブラリーをアプリケーションにインストールする必要があります。以下の行をcomposer.json
ファイルに追加し、Guzzle
4をプロジェクトに追加してください。Laravel also
includes drivers for the Mailgun and Mandrill HTTP
APIs. These APIs are often simpler and quicker than
the SMTP servers. Both of these drivers require that
the Guzzle 4 HTTP library be installed into your
application. You can add Guzzle 4 to your project by
adding the following line to your
composer.json
file:
"guzzlehttp/guzzle": "~4.0"
MailgunドライバーMailgun Driver
Mailgunドライバーを使用するには、config/mail.php
設定ファイル中のdriver
オプションをmailgun
に設定してください。次に、config/services.php
設定ファイルが、プロジェクトに存在していなければ作成してください。中身を以下のオプションにしてください。To use the Mailgun driver, set
the driver
option to
mailgun
in your
config/mail.php
configuration file.
Next, create an config/services.php
configuration file if one does not already exist for
your project. Verify that it contains the following
options:
'mailgun' => array(
'domain' => 'your-mailgun-domain',
'secret' => 'your-mailgun-key',
),
MandrillドライバーMandrill Driver
Mandrillドライバーを使用するには、config/mail.php
設定ファイル中のdriver
オプションを、mandrill
に設定してください。次に、config/services.php
設定ファイルが、プロジェクトに存在していなければ作成してください。中身を以下のオプションにしてください。To use the Mandrill driver, set
the driver
option to
mandrill
in your
config/mail.php
configuration file.
Next, create an config/services.php
configuration file if one does not already exist for
your project. Verify that it contains the following
options:
'mandrill' => array(
'secret' => 'your-mandrill-key',
),
ログドライバーLog Driver
config/mail.php
設定ファイルのdriver
オプションをlog
に設定すると、全てのメールがログファイルに書き込まれます。そして、どの受取人に対しでも、実際には送信されなくなります。これは主に、素早くローカルでデバッグするときや、内容を確認する場合に便利です。If the driver
option
of your config/mail.php
configuration
file is set to log
, all e-mails will be
written to your log files, and will not actually be
sent to any of the recipients. This is primarily
useful for quick, local debugging and content
verification.
基本的な使い方Basic Usage
Mail::send
メソッドはメールメッセージを送信するために使用されます。The Mail::send
method may be used to send an e-mail
message:
Mail::send('emails.welcome', array('key' => 'value'), function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
send
メソッドに渡される最初の引数は、メールの本文に使用されるビューの名前です。2つ目の引数はビューに渡されるデーターで、ほとんどの場合連想配列です。ビュー中、$key
により、データーのアイテムを参照できます。3つ目はクロージャーで、メッセージに様々なオプションを指定するために使用します。The first argument passed to the
send
method is the name of the view
that should be used as the e-mail body. The second
is the data to be passed to the view, often as an
associative array where the data items are available
to the view by $key
. The third is a
Closure allowing you to specify various options on
the e-mail message.
注目:
$message
変数はいつでもメールのビューに渡され、埋め込まれます。ですから、この変数を渡す必要はありません。Note: A$message
variable is always passed to e-mail views, and allows the inline embedding of attachments. So, it is best to avoid passing amessage
variable in your view payload.
HTMLビューに加え、プレーンテキストビューを指定することもできます。You may also specify a plain text view to use in addition to an HTML view:
Mail::send(array('html.view', 'text.view'), $data, $callback);
もしくは'html'か'text'をキーに使用し、片方のタイプだけのビューを指定することも可能です。Or, you may specify only one type
of view using the html
or
text
keys:
Mail::send(array('text' => 'view'), $data, $callback);
メールにカーボンコピーや添付ファイルなどのオプションも指定できます。You may specify other options on the e-mail message such as any carbon copies or attachments as well:
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タイプと表示名のどちらか、もしくは両方を指定することもできます。When attaching files to a message, you may also specify a MIME type and / or a display name:
$message->attach($pathToFile, array('as' => $display, 'mime' => $mime));
ビューを使わず、シンプルに文字列でメールする必要があるなら、raw
メソッドを使ってください。If you just need to e-mail a
simple string instead of an entire view, use the
raw
method:
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クラスを拡張しています。ですからメッセージを作成するため、このクラスのメソッドを呼び出すこともできます。Note: The message instance passed to aMail::send
Closure extends the SwiftMailer message class, allowing you to call any method on that class to build your e-mail messages.
インラインの埋め込みEmbedding Inline Attachments
メールに画像をインラインで埋め込むことは典型的な厄介者です。しかしLaravelは画像をメールに付け、最適なCIDを得る便利な方法を提供しています。Embedding inline images into your e-mails is typically cumbersome; however, Laravel provides a convenient way to attach images to your e-mails and retrieving the appropriate CID.
メールのビューに画像を埋め込むEmbedding An Image In An E-Mail View
<body>
Here is an image:
<img src="<?php echo $message->embed($pathToFile); ?>">
</body>
メールのビューにロウ(raw)・データーを埋め込むEmbedding Raw Data In An E-Mail View
<body>
Here is an image from raw data:
<img src="<?php echo $message->embedData($data, $name); ?>">
</body>
Note that the $message
variable is always
passed to e-mail views by the Mail
facade.Note that the
$message
variable is always passed to
e-mail views by the Mail
facade.
キュー使用メールQueueing Mail
メールメッセージをキューイングするQueueing A Mail Message
メール送信はアプリケーションのレスポンスをとても遅くしてしまうため、多くの開発者はメールメッセージをバックグラウンドでキュー送信するようにしています。Laravelでは組み込みの共通キューAPIを使用することで、簡単に取り扱えるようになっています。メールメッセージをキューに投入するには、Mail
ファサードのqueue
メソッドを使用するだけです。Since sending e-mail messages can
drastically lengthen the response time of your
application, many developers choose to queue e-mail
messages for background sending. Laravel makes this
easy using its built-in unified queue
API[/docs/master/queues]. To queue a mail
message, simply use the queue
method on
the Mail
facade:
Mail::queue('emails.welcome', $data, function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
もしくはlater
メソッドを使用し、メールを送信するまでの遅延秒数を指定することも可能です。You may also specify the number
of seconds you wish to delay the sending of the mail
message using the later
method:
Mail::later(5, 'emails.welcome', $data, function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
またメッセージを登録する特定のキューか「チューブ」をqueueOn
かlaterOn
メソッドを使用し、指定することも可能です。If you wish to specify a specific
queue or "tube" on which to push the
message, you may do so using the
queueOn
and laterOn
methods:
Mail::queueOn('queue-name', 'emails.welcome', $data, function($message)
{
$message->to('foo@example.com', 'John Smith')->subject('Welcome!');
});
メールとローカル開発Mail & Local Development
メールを送信するアプリケーションを開発する場合、ローカルもしくは開発環境からのメッセージ送信を無効にするほうが好ましいでしょう。そのためには、Mail::pretend
メソッドを呼び出すか、config/mail.php
設定ファイルでpretend
オプションをtrue
にしてください。pretend
モードの場合、受取人に向け送信する代わりに、アプリケーションのログファイルに書き込まれます。When developing an application
that sends e-mail, it's usually desirable to disable
the sending of messages from your local or
development environment. To do so, you may either
call the Mail::pretend
method, or set
the pretend
option in the
config/mail.php
configuration file to
true
. When the mailer is in
pretend
mode, messages will be written
to your application's log files instead of being
sent to the recipient.
テストメールのビューを確認したい場合は、MailTrapなどのサービスの使用を考慮してください。If you would like to actually view the test e-mails, consider using a service like MailTrap[https://mailtrap.io].