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 "メール送信完了!"; }); |
これで、メール送信が出来ました!