如何使用 php Laravel 输出 jQuery 变量以使用 Mail-gun 发送邮件

How to output a jQuery variable with php Laravel to send mail with Mail-gun

我已经创建了一个 AJAX 联系表格发送到 MailGun,它工作正常,但由于某种原因没有显示消息。从图中可以看出。

这是发送到 Mailgun 的电子邮件的 HTML 模板:

contact.blade.php

<h3>You have a new contact via the contact form!</h3>
<div>
    {{ $bodyMessage }}
</div>

<p>Sent via Hell</p>

我认为 contact.blade.php 没有获取 {{ bodyMessage }} 变量。

这是 AJAX 形式的 jQuery:

$("form.wpcf7-form").submit(function(e){
    e.preventDefault();
    var token = $("input[name=_token]").val(); // The CSRF token
    var first_name = $("input[name=first-name]").val();
    var last_name = $("input[name=last-name]").val();
    var email = $("input[name=email]").val();
    var phone = $("input[name=phone]").val();
    var bodyMessage = $("textarea[name=message]").val();

    $.ajax({
       type:'POST',
       url:'/contact',
       dataType: 'json',
       data:{_token: token, first_name:first_name, last_name:last_name, email:email, phone:phone, bodyMessage:bodyMessage},
       success:function(data){
           $(".email-success-messge").append(data.success).fadeIn(999);

       }
    });
});

这里是 ContactController.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Post;
use Mail;
use Session;

class ContactController extends Controller
{
    public function postContact(Request $request){
        $this->validate($request, ['email' => 'required|email'] );

        $data = array(
            'first_name' => $request->first_name,
            'last_name' => $request->last_name,
            'email' => $request->email,
            'phone' => $request->phone,
            'bodyMessage' => $request->message
        );

        Mail::send('emails.contact', $data, function($message) use ($data){
            $message->from($data['email']);
            $message->to('j***r@*********.co.uk');
            $message->subject('Contact Details');
        });

        return response()->json(['success' => 'Your E-mail was sent! Allegedly.'], 200);

    }
}

老实说,我不明白为什么它需要邮件详细信息,如发件人的电子邮件和主题,而不是邮件。

发布我的评论作为答案。

'bodyMessage' => $request->message 应该是 'bodyMessage' => $request->bodyMessage,因为您通过 ajax.

将其作为 bodyMessage 发送