Laravelのメール送信でGmailのSMTPサーバを使う

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の公式サイトでも情報が提供されています。

Using Swift Mailer for Japanese Emails

Webエンジニアブログにコメント

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Laravelのメール送信でGmailのSMTPサーバを使うの記事にコメントを投稿