Laravel 5.8 を使用しており、登録後に 2 つのメールを送信したいと考えています。最初の電子メールは登録直後にゲストに送信され、2 番目の電子メールはゲストが電子メール アドレスを確認した後にユーザーに送信されます。これは、以下の関数検証で確認できます。
保存方法
public function save(Request $request)
{
$validate = array(
'name' => ['required', 'string', 'min:2', 'max:255'],
'surname' => ['required', 'string', 'min:2', 'max:255'],
'phone' => ['required', 'string', 'min:6', 'max:20'],
'land' => ['required', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:guests'],
'user_id' => ['required', 'string', 'exists:users,id']
);
$this->validate($request, $validate);
$token = $request['user_id'].Str::random(22);
$guest = new Guest;
$guest->name = $request['name'];
$guest->surname = $request['surname'];
$guest->phone = $request['phone'];
$guest->land = $request['land'];
$guest->email = $request['email'];
$guest->user_id = $request['user_id'];
$guest->email_token = $token;
$guest->save();
MailController::send($request['email'], $request['name'], $token);
//if (email_verified === 1)
MailController::user_send($request['user_id'], $guest);
return view('guest-success');
}
検証方法
public function verify($token = false)
{
if ($token == false) $token = Cookie::get('token') ?? false;
else Cookie::queue('token', $token, 60 * 24 * 365);
if ($token === false) return view('no_tp');
$guest = Guest::where('email_token', $token)->first();
if ($guest === null) return view('no_tp');
$guest->email_verified = 1;
$guest->email_verified_at = time();
$guest->save();
$user = User::find($guest->user_id);
Cookie::queue('TP', $user->user_id, 60 * 24 * 365);
return view('public-profile', compact('user'));
}