Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sending email with laravel, but doesn't recognize variable [duplicate]

I'm trying to send an email through Laravel, but I'm getting this error:

Undefined variable: contactEmail

Even though it got defined above it. What is going wrong here?

Controller

$contactName = Input::get('name'); $contactEmail = Input::get('email'); $contactMessage = Input::get('message');  $data = array('name'=>$contactName, 'email'=>$contactEmail, 'message'=>$contactMessage); Mail::send('template.mail', $data, function($message) {        $message->from($contactEmail, $contactName);     $message->to('[email protected]', 'myName')->subject('Mail via aallouch.com'); }); 

EDIT:

template.mail

Name: {{$name}} Email: {{$email}} Message:{{$message}} 
like image 220
mXX Avatar asked Oct 16 '13 19:10

mXX


2 Answers

As your $data variable is defined as:

$data = array(     'name'=>$contactName,      'email'=>$contactEmail,      'message'=>$contactMessage ); 

You won't have a $data available in your view, but you can use directly:

{{ $name }} {{ $email }} {{ $message }} 

EDIT:

And your controller should have:

    $contactName = Input::get('name');     $contactEmail = Input::get('email');     $contactMessage = Input::get('message');      $data = array('name'=>$contactName, 'email'=>$contactEmail, 'message'=>$contactMessage);     Mail::send('template.mail', $data, function($message) use ($contactEmail, $contactName)     {            $message->from($contactEmail, $contactName);         $message->to('[email protected]', 'myName')->subject('Mail via aallouch.com');     }); 

You must pass your variables to the closure using

use ($contactEmail, $contactName) 

As shown above.

like image 192
Antonio Carlos Ribeiro Avatar answered Sep 29 '22 11:09

Antonio Carlos Ribeiro


I have got this error and I have solved it. I have replace $message keyword with $comment from $data.

Example below :

$data = array('name' => 'vikas', 'message' => 'test message'); 

view

{{ $name }} {{ $message }} 

It's getting error

$data = array('name' => 'vikas', 'comment' => 'test message');  {{ $name }} {{ $comment }} 

Now it's working fine.

like image 27
Vikas Burman Avatar answered Sep 29 '22 11:09

Vikas Burman