簡體   English   中英

無法通過Laravel 5聯系表發送電子郵件

[英]unable to send emails via Laravel 5 contact form

我是Laravel的新手,正在嘗試通過聯系表發送電子郵件。

這是html形式:

<form onsubmit="return false" method="post" id="contact_form" name="contact-form">          
   <input type="hidden" name="_token" value="{{ csrf_token() }}">
   <input type="text" placeholder="Full Name" name="fullname" id="fullname" required>
   <input placeholder="Email Address" required name="email" id="email">
   <button id="contact_btn"data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> Sending" >Send Your Message</button>
</form>

這是控制器:

public function contactPost(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('**@gmail.com');
    });
    return ['success' => true,];
}

這是路線:

Route::post('contact', 'PagesController@contactPost');

這是我在laravel.logs上可以找到的最后一個錯誤:

[2017-08-11 06:30:53] local.ERROR: ErrorException: Use of undefined constant csrf_token - assumed 'csrf_token' in C:\xampp\htdocs\paygizer\storage\framework\views\b9aff2e30c0efeff3b03704fbc6a957f360869cf.php:385

自昨天以來,無論我做什么都沒有更新錯誤,我多次重啟了服務器。

這是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);
    $.ajaxSetup({
        headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
      type: 'POST',
      url: "{{url('contact')}}",
  // data: form.serialize(),
  dataType: 'json',
  async: true,
  data: {
    fullname: $('#fullname').val(),
    email: $('#email').val(),
  },
  success: function (json) {
    $('#contact').hide();
    $('#output').html(
      '<i class="fa fa-check" aria-hidden="true" id="check" style="border-radius:50%;font-size:80px;text-align:center;color:#E81B00"></i><br><p class="lead" style="font-size:40px;">We have received your message!</p>'
      ).show();
  },
   error: function(data){
        alert(data);
    },
});
   return false; // for demo
   } 

});

Chrome開發人員工具上沒有錯誤。 當我點擊提交按鈕加載,什么也沒有發生。

1)嘗試更換

<input type="hidden" name="_token" value="{{ csrf_token() }}">

{{ csrf_field() }}

2)由於它是一個ajax調用,您確定存在csrf-token元嗎?

<meta name="csrf-token" content="{{ csrf_token() }}">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM