2018/10/12
Laravelでメールフォームを作ろうと思ったら、まずはメールが送信できるように設定を行います。
googleのGメールを使ってメール送信テストを行います。
進め方
【1】Gメール側の設定
【2】.envファイルの編集
【3】config/mail.phpの編集
【4】tinkerでテスト送信
【1】Gメール側の設定
Laravelの設定ファイルをこれから編集する前にGメールのセキュリティーレベルを落します。
安全性の低いアプリの設定を オン にします。
【2】.envファイルの編集
.envファイルを編集します。
Gメールのメールアドレスとパスワードを設定します。
- MAIL_FROM_ADDREDSS
- MAIL_FROM_NAME
も何かしら入力します。特に MAIL_FROM_ADDREDSS はnullのままだと送信できません。
また MAIL_FROM_NAME はスペースを入れるとエラーになります。 (tinkerが起動しない)
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=xxxxxx@gmail.com MAIL_PASSWORD=xxxxxx MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS=xxx@xxxxxx.com MAIL_FROM_NAME=xxxxxx
なお、gitを使っている場合は、FTPソフトで.envファイルを個別にアップします。
.envファイルはデフォルトで.gitignoreに追加されているからです。
【3】config/mail.phpの編集
"from" の項目だけ編集します。
残りはデフォルトのままで問題ありません。
<?php return [ 'driver' => env('MAIL_DRIVER', 'smtp'), 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'from' => [ //ここの設定を追加 'address' => env('MAIL_FROM_ADDRESS', null), 'name' => env('MAIL_FROM_NAME', null) ], 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'sendmail' => '/usr/sbin/sendmail -bs', ];
env関数の第一引数で .env で設定した値を読みます。
なければ、第二引数の設定を読みます。
【4】tinkerでテスト送信
送信ができているかのテストはtinkerで確認できます。
artisanコマンドでtinkerを起動します。
php artisan tinker
Mail::raw() でテキストメールを送信します。
【文法】Mail::raw('メール本文',クロージャー)
クロージャーではメッセージビルダーのインスタンスを渡していきます。
メッセージビルダーの使用できるメソッドは以下になります。
$message->sender($address, $name = null);
$message->to($address, $name = null);
$message->cc($address, $name = null);
$message->bcc($address, $name = null);
$message->replyTo($address, $name = null);
$message->subject($subject);
$message->priority($level);
$message->attach($pathToFile, array $options = []);
// $data文字列をそのまま付属ファイルへ…
$message->attachData($data, $name, array $options = []);
// 裏で動作するSwiftMailerメッセージインスタンスの取得…
$message->getSwiftMessage();
>>> Mail::raw('this is the demonstration.',function($message) {$message->to('{メールアドレス}')->subject('test');}); => 1
=>1が返ってくればOKです。
※件名やメール本文に半角英数字以外を入力すると文字化けのメールが届きます。
メール送信機能の実装については以上です。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。