0

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!!

K Akhil
  • 27
  • 6
  • 1
    Read about [use keyword](http://stackoverflow.com/questions/1065188/in-php-5-3-0-what-is-the-function-use-identifier) in anonymous functions – Wojciech Mleczek Apr 28 '17 at 20:14

2 Answers2

2

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);
});
Hedam
  • 2,209
  • 27
  • 53
0

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)
    { //...
chiliNUT
  • 18,989
  • 14
  • 66
  • 106