Laravelのメール送信設定
基本的な設定
Laravelのメール送信設定です。
基本的な設定は、
app/config/mail.php
でコンフィグレーションできます。GmailのSMTPサーバを利用してメールを送信する際の設定は以下のとおりです。
return array( 'driver' => 'smtp', 'host' => 'smtp.gmail.com', 'port' => 465, 'from' => array('address' => null, 'name' => null), 'encryption' => 'ssl', 'username' => 'gmail_account', 'password' => 'gmail_password', 'sendmail' => '/usr/sbin/sendmail -bs', 'pretend' => false, );
usernameとpasswordに利用中のGmailアカウントの情報を入力すれことになります。
メールの送信
パラメータの渡し方などについてはLaravelの公式ドキュメントを参照することになります。
HTMLメール
HTMLメールの場合は、Mail::sendの最初の引数としてHTML形式のViewを渡します。
$from = '****@yahoo.co.jp'; $to = '****@gmail.com'; Mail::send('emails.html', array('email' => $to), function($message){ $message->from($from, 'From Name'); $message->to($to)->subject('テストメール'); });
HTMLのViewは以下のとおりです。
app/Views/emails/html.blade.php
として以下のようにHTMLメールを作成することが可能です。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <h1>{{$email}}さん</h1> <p>テストのメールです。</p> </body> </html>
テキストメール
テキストメールの場合は、Mail::sendの第一引数の渡し方がHTMLの場合と異なります。
Mail::send(array('text' => 'emails.text'), array('email' => $to), function($message){ $message->from($from, 'From Name'); $message->to($to)->subject('テストメール'); });
テキスト形式のViewは以下の通りです。
app/Views/emails/text.blade.php
{{$email}}さん{{chr(13)}} {{chr(13)}} テストのメールです。
改行コードとして
chr(13)
を使うことでうまく改行を入れることができます。
ここまで設定することでHTMLもしくはテキストのメールをGmailのSMTPサーバを使って送信することが出来ます。
Controller内で設定を調整
記事の冒頭に書いたとおり、Laravelのメール送信設定は
app/config/mail.php
で行うことが出来ますが、Controllerで設定することも可能です。
Config::set('mail.host', 'smtp.gmail.com'); Config::set('mail.port', 465); Config::set('mail.encryption', 'ssl'); Config::set('mail.username', 'gmail_account'); Config::set('mail.password', 'gmail_password');
Config::set()を利用してmail.phpのコンフィグレーションを上書きすることが出来ます。
setCharsetでISO-2022-JPを設定
LaravelはメールコンポーネントとしてSwift Mailerを利用しており、setCharsetを指定する場合にはSwift Mailerの調整が発生するようです。
以下のブログでは、setCharsetの設定や日本語についての解説がされています。
Swift Mailの公式サイトでも情報が提供されています。