为什么我在Laravel方法中得到未定义的变量错误?

Inv*_*tax 0 php laravel

我在PageController中创建了一个Laravel方法,以便在发送表单数据时发送电子邮件,如下所示:

public function sendMessage(Request $request)
{

    $name = $request->input('name');
    $email = $request->input('email');
    $message_content = $request->input('message');

    // email message
    Mail::raw($message_content, function ($message) 
    {
        $message->from($email, $name);
        // $message->to(env('APP_ADMIN_EMAIL'));
        $message->to("myemail@mail.com");
        $message->subject('Website Message');
    });

    return "message sent";

}
Run Code Online (Sandbox Code Playgroud)

但是在调用方法时我收到此错误:

ErrorException未定义的变量:电子邮件

谁能解释我做错了什么?

小智 9

您需要将变量传递给闭包:

Mail::raw($message_content, function ($message) use ($email, $name)
{
    $message->from($email, $name);
    $message->to("myemail@mail.com");
    $message->subject('Website Message');
});
Run Code Online (Sandbox Code Playgroud)

请参阅docs:https://secure.php.net/manual/en/functions.anonymous.php