質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

2081閲覧

laravel5.5 メールが重複送信されてしまうのを回避したい。

ken10507

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2019/06/26 08:03

編集2019/06/26 08:05

前提・実現したいこと

現在laravel5.5でデータ登録時に登録ユーザーに対してメールを送る処理を実装したいと思っています。

【実現したいこと】
1回のメール送信にしたい。

発生している問題・エラーメッセージ

メールは送信されているが、なぜか重複送信(2回送信)されている。

該当のソースコード

CompanyController

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\User; 7use App\Models\Company; 8use Illuminate\Support\Facades\Mail; 9use Illuminate\Support\Facades\Hash; 10 11 12class ShopController extends Controller 13{ 14 15 16 17 //企業登録処理 18 public function store(Request $request) 19 { 20 // //バリデーションチェック 21 // $validator = Validator::make($request->all(), [ 22 23 24 // ]); 25 26 // // バリデーションエラーだった場合 27 // if ($validator->fails()) { 28 // return redirect('/staff-shoplist/add') 29 // ->withErrors($validator) 30 // ->withInput(); 31 // } 32 33 // 自動生成パスワード 34 $pass = str_random(8); 35 36 // 自動生成ユーザーID 37 $original_id = str_random(30); 38 39 $url = url('/'); 40 41 42 // adminユーザーを発行する 43 $user = new User; 44 $user->family_name = $request->company_name; 45 $user->given_name = $request->admin_name; 46 $user->password = Hash::make($pass); 47 $user->email = $request->company_email; 48 $user->user_img = 'sample.svg'; 49 $user->authority_id = 3; 50 $user->original_id = $original_id; 51 $user->save(); 52 53 // 企業登録処理 54 $company = new Company; 55 $company->company_name = $request->company_name; 56 $company->admin_id = $user->id; 57 $company->admin_name = $request->admin_name; 58 $company->add1 = $request->add1; 59 $company->add2 = $request->add2; 60 $company->add3 = $request->add3; 61 $company->option = $request->option; 62 $company->tel = $request->tel; 63 $company->company_email = $request->company_email; 64 $company->save(); 65 66 67 68 // 登録完了時のメール送信処理 69 Mail::send(['text' => 'emails.new_company_register_text'], [ 70 'company_name'=>$request->company_name, 71 'admin_name'=>$request->admin_name, 72 'email'=>$request->company_email, 73 'original_id'=>$original_id, 74 'pass'=>$pass, 75 'url'=>$url 76 77 ], function($message) use($request) { 78 $message 79 ->from('info@test.jp') 80 ->to($request->company_email) 81 ->bcc('test_staff@test.jp') 82 ->subject("$request->company_name $request->admin_name さんの企業アカウントが発行されました。"); 83 }); 84 85 //企業一覧に戻す 86 return redirect('/staff-companylist'); 87 } 88 89} 90

試したこと

csrfのトークンを取得して重複回避処理を試したがメールは2回送られていた。

補足情報(FW/ツールのバージョンなど)

laralvel5.5
今回はMailableクラスを作らずに、Mail::sendで簡単に実装しようと試みています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Mail::sendが一箇所だけならば、ShopController@storeが二回呼ばれている気がします。
csrfトークンは、フォームの重複送信を防ぐ機能でなく、意図しないリンクやフォームからのデータ送信を防ぐ機能です。

投稿2019/06/26 09:03

aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ken10507

2019/06/26 14:44

ご回答ありがとうございます! もっとしょうもないことでした。 大変お恥ずかしいですがMailtrapを使っていてbccに入れているメールも動いていただけのことでした。 csrfトークンにつても間違った認識をしていたので勉強になりました。 ありがとうございました。
aro10

2019/06/26 14:46

????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問