現在ユーザーの入力した情報をメールでユーザーと管理者それぞれに送る機能を実装しようとしています。
ユーザーにはサンクスメールを、管理者には入力した内容一式をメールで送信します。
こちらどちらか片方だけの時には正しく送信できるのですが、両方一度にとなるとうまく動作しません。
以下は記述しているコードです。
app/Http/Controllers/TestController.php
php
1 2class TestController extends Controller 3{ 4 public function index(){ 5 return view('test.index'); 6 } 7 8 public function store(Request $request){ 9 $validator = Validator::make($request->all(), [ 10 'first_name' => 'required', 11 'email' => 'required|email|confirmed', 12 'body' => 'required', 13 ]); 14 15 if ($validator->fails()) { 16 return redirect() 17 ->back() 18 ->withErrors($validator) 19 ->withInput(); 20 } 21 else { 22 $data = $request -> all(); 23 $request -> session() -> put($data); 24 25 return view('test.confirm', compact("data")); 26 } 27 } 28 29 public function confirm(Request $request){ 30 $data = $request -> all(); 31 $request -> session() -> put($data); 32 33 return view('test.confirm', compact("data")); 34 } 35 36 public function complete(){ 37 $data = session() -> all(); 38 39 $this -> sendMailToUser(); 40 $this -> sendMailToAdmin(); 41 42 return view('test.complete'); 43 } 44 45 public function sendMailToUser(Request $request){ 46 $data = session() -> all(); 47 48 Mail::send(['text' => 'test.mailtouser'], $data, function($message) use($data){ 49 $message -> to($data['email']) -> subject("お問い合わせを受け付けました"); 50 }); 51 } 52 53 public function sendMailToAdmin(Request $request){ 54 $data = session() -> all(); 55 56 Mail::send(['text' => 'test.mailtoadmin'], $data, function($message) use($data){ 57 $message -> to('admin@example.com') -> subject("お問い合わせ受付"); 58 }); 59 } 60} 61
route.php ( 当方 Laravel5.3 のため、実際は routes/web.php )
php
1 2Route::resource('/test', 'TestController', ['only' => ['index', 'store']]); 3 4Route::get('/test/confirm', function () { 5 return view('test.confirm'); 6}); 7 8Route::get('/test/complete', function () { 9 return view('test.complete'); 10}); 11 12Route::post('/test/complete','TestController@sendMailToUser'); 13Route::post('/test/complete','TestController@sendMailToAdmin'); 14
ユーザーの入力内容を一旦セッションに記憶した後、
確認画面で内容を表示、そこで送信ボタンを押すと
セッションの内容を mailtoadmin.blade.php でまとめてメールで管理者に送信、
その後にユーザーに mailtouser.blade.php に書いた平文メールを送った後、
完了ページに遷移するという流れです。
このうち、ユーザーにメールを送る、という部分が実行できておりません。管理者には送信できています。
どの部分を修正すると二人に送信できますでしょうか。
ご教授よろしくお願いいたします。
追記
次のようにすることで二人に送ることができるようにはなりましたが、記述として正しくないような気がします。。
もっと良い書き方はございますでしょうか。
php
1 2 public function sendMail(Request $request){ 3 $data = session() -> all(); 4 5 Mail::send(['text' => 'test.mailtouser'], $data, function($message) use($data){ 6 $message -> to($data['email']) -> subject("お問い合わせを受け付けました"); 7 }); 8 9 Mail::send(['text' => 'test.mailtoadmin'], $data, function($message) use($data){ 10 $message -> to('admin@example.com') -> subject("お問い合わせ受付"); 11 }); 12 } 13
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/04 08:11 編集