【问题标题】:unable to send emails via Laravel 5 contact form无法通过 Laravel 5 联系表发送电子邮件
【发布时间】:2018-01-21 07:16:34
【问题描述】:

我是 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 开发工具没有错误。当我点击提交按钮加载并没有任何反应。

【问题讨论】:

    标签: php jquery ajax forms laravel-5


    【解决方案1】:

    1) 尝试替换

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

    {{ csrf_field() }}
    

    2) 因为它是一个 ajax 调用,你确定 csrf-token 元存在吗?

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

    【讨论】:

    • 同样的事情,页面加载和成功代码没有启动,我也没有收到电子邮件。
    • 我们可以继续聊天吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 2020-03-23
    • 2013-10-07
    • 2023-03-25
    • 1970-01-01
    • 2016-01-27
    相关资源
    最近更新 更多