K Akhil
K Akhil

Reputation: 27

laravel : Not able to pass parameters to trait

I created a trait in MailTrait.php, the following is my code

namespace App\Traits;
use Mail;
trait MailTrait
{

    public function fn_send_mail($arr_recepients, $str_subject, $str_content)
    {
        Mail::send('mail.mailsample', ['content' => $str_content], function($message)
        {
            $message->to($arr_recepients);
            $message->from('abc.org', 'abc');
            $message->subject($str_subject);

        });
        if(Mail:: failures())
            return false;
        else
            return true;
    }

}

from my controller called the function fn_send_mail() and passed parameter as below $status = $this->fn_send_mail(['123.gmail.com'],'hai', 'hai');

i am getting this error ErrorException in MailTrait.php line 14: Undefined variable: arr_recepients please help me!!

Upvotes: 0

Views: 1552

Answers (2)

Hedam
Hedam

Reputation: 2249

You should pass the $arr_recepients to the callback-block

Mail::send('mail.mailsample', ['content' => $str_content], function($message) use ($arr_recepients, $str_subject)
{
      $message->to($arr_recepients);
      $message->from('abc.org', 'abc');
      $message->subject($str_subject);
});

Upvotes: 2

chiliNUT
chiliNUT

Reputation: 19573

The 3rd argument to Mail::send is a closure, and it doesn't have $arr_recepients in scope, nor the subject. You need to use the use. Try this

Mail::send('mail.mailsample', ['content' => $str_content], function($message) use ($arr_recepients, $str_subject)
    { //...

Upvotes: 0

Related Questions