Php 500通过AJAX发送电子邮件时出错(Laravel 5.4)

Php 500通过AJAX发送电子邮件时出错(Laravel 5.4),php,ajax,email,laravel-5,Php,Ajax,Email,Laravel 5,我正试图让一个表格在一个Laravel项目中发送电子邮件。然而,我一直收到500个错误。我正在学习教程 这是路线: Route::post('contact', 'PagesController@contact'); 这是控制器: public function contact(Request $request) { $this->validate($request, [ 'email'=>'required|email', 'fu

我正试图让一个表格在一个Laravel项目中发送电子邮件。然而,我一直收到500个错误。我正在学习教程

这是路线:

    Route::post('contact', 'PagesController@contact');
这是控制器:

public function contact(Request $request) {

    $this->validate($request, [
        'email'=>'required|email',
        'fullname'=>'max:50'
        ]);

    $data = array(
        'email' => $request->email,
        'fullname' => $request->fullname,
        );

    Mail::send('emails.contact', $data, function($message) use ($data){
        $message->from($data['email']);
        $message->to('moghrabi@gmail.com');

    });
}
正如前面的问题所指出的,这个视图包含带有CSRF的HTML表单

<form onsubmit="return false" method="post" id="contact_form" name="contact-form">

    <input type="hidden" name="_token" value="{{ csrf_field() }}">
    <input type="text" class="form-control" name="fullname" id="fullname" required>
    <input class="form-control" aria-describedby='sizing-addon1' placeholder="Email Address" required name="email" id="email">
    <button id="contact_btn" data-loading-text="Sending" >Send Your Message</button>

</form>

发送您的消息
这是AJAX代码:

$('#contact_form').submit(function(e) {
              e.preventDefault();
            }).validate({ 

          rules: {
            fullname: {
              required: true,

            },
            email: {
              required: true,
              email: true
            },
         },
          submitHandler: function (form) {

            var btn = $('#contact_btn');
            btn.button('loading');
            setTimeout(function() {
              btn.button('reset');
            }, 8000);

            $.ajax({
              type: 'POST',
              url: "{{url('contact')}}",

              dataType: 'json',
              async: true,
              data: {

                fullname: $('#fullname').val(),
                email: $('#email').val(),

          },

              success: function (json) {
                $('#contact').hide();
                $('#output').html(
                  '<p>We have received your message!</p>'
                  ).show();
              }
            });
               return false; 
        } 
   });
$('contact#u form')。提交(函数(e){
e、 预防默认值();
}).validate({
规则:{
全名:{
要求:正确,
},
电邮:{
要求:正确,
电子邮件:真的
},
},
submitHandler:函数(表单){
var btn=$(“#联系_btn”);
按钮(“加载”);
setTimeout(函数(){
btn.按钮(“重置”);
}, 8000);
$.ajax({
键入:“POST”,
url:“{url('contact')}}”,
数据类型:“json”,
async:true,
数据:{
全名:$(“#全名”).val(),
电子邮件:$('#email').val(),
},
成功:函数(json){
$(“#联系人”).hide();
$('#output').html(
“我们已收到您的消息!

” ).show(); } }); 返回false; } });
在Chrome开发工具中:

加载资源失败:服务器响应状态为500 (内部服务器错误)


我认为问题出在这方面:

<input type="hidden" name="_token" value="{{ csrf_field() }}">
或在调用ajax函数之前在ajax标头中:

$.ajaxSetup({
      headers: {
          'X-CSRF-TOKEN': $('[name="_token"]').val()
      }
    });

日志的最后一部分是无用的
#1
是您要检查http服务器错误日志的内容。
$data['subject']
不存在。我更新了服务器日志。改进了问题格式
$.ajaxSetup({
      headers: {
          'X-CSRF-TOKEN': $('[name="_token"]').val()
      }
    });