laravel5.1でメール送信する
gmailに接続する例が多いけど、WebサーバにPostfixとかSendMailが入っていれば、phpのmail関数でメール送信できる。
メール・アカウントを用意しなくても、すぐに送信できるので、今回はその方法で試してみた。
0, メールの送信方法をphpのmail関数に変更する。デフォルトはsmtp(送信メールサーバに接続)
.envファイルを編集
MAIL_DRIVER=mail ← smtpから変更
MAIL_HOST=localhost
MAIL_PORT=25
ブラウザ上で確認する
| 1 2 3 | Route::get('/a', function(){     return dd(\Config::get('mail'));  }); | 
array:9 [▼
  “driver” => “mail” ← smtpから変更されるはず
  “host” => “localhost”
  “port” => “25”
  “from” => array:2 [▶]
  “encryption” => null
  “username” => null
  “password” => null
  “sendmail” => “/usr/sbin/sendmail -bs”
  “pretend” => false
]
※configキャッシュが悪さをしている事もあるので、クリアした方がいい
| 1 2 | php artisan config:clear  php artisan config:cache | 
1, メールのテンプレートを作る
画面と同様に、bladeテンプレートファイルを生成しておいて、変数を渡すやり方。
a, resources/views/emailsフォルダを生成
b, そこにhello.blade.phpなど、任意のテンプレート名で生成する
2, hello.blade.phpの中身
| 1 | hello {{ $name }}  | 
3, 送信処理を、とりあえずroute.phpに書く
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Route::get('/a', function(){     //return dd(\Config::get('mail'));      $data = ['name' => 'taro']; //メールテンプレートに渡す変数データ     Mail::send('emails.hello', $data, function($message){         $message->from('a@b.com', '送信者名') // 偽装でも送信可だが迷惑メール行き!                 ->to('your_mail@gmail.com', '受信者名')                 ->subject('test_subject') //              ->attach('http://k.yimg.jp/images/top/sp2/cmn/logo-ns-131205.png') // 添付ファイルは、パスやURLを指定する //              ->attachData("this is text", 'a.txt') // 変数データ&ファイル名でもOK                 ;                    });     return "メール送信完了!"; }); | 
これで、メール送信が出来ました!