如何在用户控制器中输入laravel邮件中的外部变量?

问题描述:

I have a function in user controller in laravel that allows users to enter their name and email in a form and send an email to administrator. But when I try to the variable containing them in the MailTo function, it gives error. Here is my code:

public function send_email_contact_us(){
        $name = Input::get('name');
        $email = Input::get('email');
        $message_contact = Input::get('message');
        $sender_email = Input::get('email');
            $sender_name = Input::get('name');

        $validator = Validator::make(
            array(

                'name' => $name,
                'email' => $email

            ), array(
                'name' => 'required',
                'email' => 'required',

            )
        );

        if ($validator->fails())
        {
            $error_messages = $validator->messages()->all();
            return Redirect::back()->with('flash_errors',"Message not sent, please try again.");
        }
        else
        {
            $data=array("name"=>$name,"email"=>$email,"message_contact"=>$message_contact);
            Mail::send('emails.contactus',$data, function($message)
            {
       $message->from($sender_email, $sender_name); // THIS GIVES ERROR
        $message->to("admin@admin.com")->subject('Contact Us');
            });
            return Redirect::back()->with('flash_success',"Message sent successfully.");
        }
    }

Any help would be highly appreciated.

change to this

Mail::send('emails.contactus',$data, function($message) use($sender_email,$sender_name)
{
   $message->from($sender_email, $sender_name);
   $message->to("admin@admin.com")->subject('Contact Us');
});

To use external variables in a closure you have to import the variable into the closure by using the use keyword