Php 在Laravel中提交请求并发送邮件

Php 在Laravel中提交请求并发送邮件,php,laravel,laravel-5,Php,Laravel,Laravel 5,我正试图提交一份表格,并根据通过表格提交的数据发送一封电子邮件,但它似乎不起作用,因为我没有收到成功消息 控制器 公共职能联系人(请求$Request) { $request=request()->validate([ “名称”=>“必需”, “电子邮件”=>“必需”|电子邮件”, '消息'=>'必需|最大值:1000', ]); 邮件::致('support@mail.com“)->发送(新联系人($request)); return redirect()->back()->带有(“成功”,“

我正试图提交一份表格,并根据通过表格提交的数据发送一封电子邮件,但它似乎不起作用,因为我没有收到成功消息

控制器

公共职能联系人(请求$Request)
{
$request=request()->validate([
“名称”=>“必需”,
“电子邮件”=>“必需”|电子邮件”,
'消息'=>'必需|最大值:1000',
]);
邮件::致('support@mail.com“)->发送(新联系人($request));
return redirect()->back()->带有(“成功”,“您的电子邮件已成功发送”);
}
表格

@if(会话('error'))
{{session('error')}
@恩迪夫
@if(会话(“成功”)
{{session('success')}
@恩迪夫
@csrf
接触
路线

`Route::post('/contact', 'HomeController@contact');`

如果你被重定向回表单页面而没有错误消息或Success flash消息,那么我倾向于认为问题出在你的模板上。假设您使用的是laracasts/flash包,那么您的方法应该如下所示

public function contact(Request $request)
{
    $request = request()->validate([
        'name' => 'required',
        'email' => 'required| email',
        'message' => 'required | max:1000'
    ]);

    Mail::to('support@mail.com')->send(
         new contact($request)
    );

    return redirect()->back()->with("success", "You email has successfully been sent");
}
redirect()->with()将数据添加到会话中,但它不会显示消息,除非您在这样的模板中手动执行此操作

@if (session('sucess'))
    <div class="alert alert-success">
        {{ session('success') }}
    </div>
@endif
@if(会话('success'))
{{session('success')}
@恩迪夫

确保在表单中正确显示错误,将
会话('error')
块替换为以下内容:

@if($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif
您的邮件类应该如下所示:

namespace-App\Mail;
使用\Http\Request;
使用照明\总线\可排队;
使用Illumb\Mail\Mailable;
使用照明\队列\序列化模型;
类联系人扩展了Mailable
{
使用可排队、序列化的模型;
受保护的美元请求;
公共函数构造(请求$Request)
{
$this->request=$request;
}
公共功能构建()
{
//请求实例必须传递给视图。。。
返回$this->markdown('emails.contact'[
“请求”=>$this->request
]);
}
}
现在,您可以在电子邮件标记(
emails.contact
)中使用
Request
对象。例如:

**Name**<br>
{{ $request->input('name') }}

**Email**<br>
{{ $request->input('email') }}

**Message**<br>
{{ $request->input('message') }}
**名称**
{{$request->input('name')} **电子邮件**
{{$request->input('email')} **消息**
{{$request->input('message')}
您能在发送电子邮件之前添加($request)吗?您在storage/logs/laravel.log中看到了什么吗?您的发送路线是否正确?检查您的csrf代币是否包括在内?在验证函数之前,请尝试
dd
。是的,我添加了dd($request)并将请求数据取回。我检查了storage/logs/laravel.log,那里什么都没有,是的路由方法是post。我在注释验证和邮件功能时得到响应,我认为问题在于我的验证。请帮助我不,我没有收到500错误,我只是没有得到任何回应,我尝试了这个,但仍然没有工作,你可能会得到一个验证错误,然后<代码>会话(“错误”)不是在视图中输出错误的方式。请参见“是”,我确实收到了一个错误,如:未定义变量:request(视图:C:\xampp\htdocs\lullaby\resources\views\emails\contact.blade.phpMail Class
public function build(){return$this->markdown('emails.contact');}}
我已经更新了我的答案,试图纠正我所能看到的与您的代码有关的所有错误。我还没有对此进行测试,因此可能存在问题。