在Laravel 5.4中获取“未定义的变量:电子邮件”

Why am I getting "Undefined variable: emails" in Laravel 5.4, but the same code is working fine in Laravel 5.2? Below is a code snipped. Don't think this matters but I'm using PHP 7.1.3.

public function send(Request $request) {
    $emails = "";

    try {
        $emails = [$request->input('to'), "john.doe@gmail.com"];

        Mail::send('email.contact', ['request' => $request], function($message) use ($request) {
            $message->from($request->input('email'), $request->input('email'));
            $message->to($emails[0], $emails[0])
                ->cc($emails[1], $emails[1])
                ->subject("Contact Us");
        });

        $response = array (
            'success' => true,
            'message' => 'Message sent.',
            $request
        );
    }
    catch(Exception $e) {
        $response = array (
            'success' => false,
            'message' => $e->getMessage(),
            $request
        );
    }
    // return Response::json( $response );
    return $response;
}

The issue is here:

use ($request) {

to use $emails inside the anonymous function you have to pass it here like:

use ($request, $emails) {

Now you can use it.

Anonymous function reference

Just simply use the $emails variable in the anonymous function along with $request variable.

Full code to give this it a try.

public function send(Request $request) {
    $emails = "";

    try {
        $emails = [$request->input('to'), "john.doe@gmail.com"];

        Mail::send('email.contact', ['request' => $request], function($message) use ($request, $emails) { 
                                                             # Here add $emails variable in use list.
            $message->from($request->input('email'), $request->input('email'));
            $message->to($emails[0], $emails[0])
                ->cc($emails[1], $emails[1])
                ->subject("Contact Us");
        });

        $response = array (
            'success' => true,
            'message' => 'Message sent.',
            $request
        );
    }
    catch(Exception $e) {
        $response = array (
            'success' => false,
            'message' => $e->getMessage(),
            $request
        );
    }
    // return Response::json( $response );
    return $response;
}

Hope this helps.