我用Laravel5制作了邮件发送程序,效果很好。
public function sendMail(Request $request){
$data = session() -> all();
// send mail to User and Admin
Mail::send(['text' => 'test.mailtouser'], $data, function($message) use($data){
$message -> to($data['email']) -> subject("To User");
});
Mail::send(['text' => 'test.mailtoadmin'], $data, function($message) use($data){
$message -> to('admin@example.com') -> subject("To Admin");
});
return view('test.complete');
}
但是如果用户进行页面reflesh,则每次都会发送邮件。 所以我需要在页面刷新时删除会话数据。 我希望这样做。
public function sendMail(Request $request){
$data = session() -> all();
// send mail to User and Admin
Mail::send(['text' => 'test.mailtouser'], $data, function($message) use($data){
$message -> to($data['email']) -> subject("To User");
});
Mail::send(['text' => 'test.mailtoadmin'], $data, function($message) use($data){
$message -> to('admin@example.com') -> subject("To Admin");
});
if( page reload... ){
$request -> session() -> flush();
return redirect('/');
}
else { // page reload not yet...
return view('test.complete');
}
}
任何解决方案?
P.S。 谢谢大家的回复。 是的,我可以在邮件发送后删除会话数据。 但是如果我在会话数据删除后尝试重新加载, 我将捕获TokenMismatchException。 所以我认为当会话数据为空时需要重定向。
public function sendMail(Request $request){
$data = session() -> all();
// send mail to User and Admin
Mail::send(['text' => 'test.mailtouser'], $data, function($message) use($data){
$message -> to($data['email']) -> subject("To User");
});
Mail::send(['text' => 'test.mailtoadmin'], $data, function($message) use($data){
$message -> to('admin@example.com') -> subject("To Admin");
});
$request -> session() -> flush();
if(empty( $request -> session() ...? ){
return redirect('/');
}
else {
return view('test.complete');
}
}
如何捕获空会话数据?
答案 0 :(得分:0)
谢谢大家。 对不起,像乌龟一样回答这个问题为时已晚。 最后,我解决了这个问题。
public function sendMail(Request $request){
$data = session() -> all();
// send mail to User and Admin
Mail::send(['text' => 'test.mailtouser'], $data, function($message) use($data){
$message -> to($data['email']) -> subject("To User");
});
Mail::send(['text' => 'test.mailtoadmin'], $data, function($message) use($data){
$message -> to('admin@example.com') -> subject("To Admin");
});
$request -> session() -> flush();
return view('test.complete');
}
并且,如果在app / Exceptions / Handler.php中找到令牌不匹配,则重定向到文档根目录
use Illuminate\Session\TokenMismatchException;
public function render($request, Exception $e)
{
if ($e instanceof TokenMismatchException) {
return redirect('/');
}
}
我希望在Controller中捕获tokenmismatchexception,但我找不到方法。 这就是我使用handler.php
的原因