Skip to content
Advertisement

Laravel error while sending a queue email

I’m facing the following error in the failed_jobs database table:

ErrorException: Undefined property: stdClass::$subscription in /home/sm/public_html/app/Mail/NewCustomer.php:45

This is pretty basic. It means the property $subscription does not exists, but…the problem is that I don’t call $subscription anywhere in the class code.

In the controller I assign the values:

$to = ['email' => 'someemail@gmail.com', 'name' => 'Name test'];

$mail = new stdClass;
$mail->to = $to;
$mail->subject = 'Subject test';
$mail->body = 'Body test';

Mail::queue(new AppMailNewCustomer($mail));

And the NewCustomer class contains:

namespace AppMail;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;

class NewCustomer extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Holds the item content
     * 
     * @var Array
     */
    protected $item;

    /**
     * Create a new message instance.
     * 
     * @param Array
     *
     * @return void
     */
    public function __construct($item)
    {
        $this->item = $item;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        $this->to($this->item->to['email'], $this->item->to['name'])
            ->subject($this->item->subject)
            ->view('mails/new_customer')
            ->with('item', $this->item);

        return $this;
    }
}

The view mails/new_customer also does not contain anything related with $subscription.

Is this some cache problem or something? I can’t figure out where the variable $subscription comes from.

If instead of Queue I send the email immediately, it works great:

Mail::send(new AppMailNewCustomer($mail));

Advertisement

Answer

Solved.

It was indeed a cache problem. Run php artisan queue:restart in terminal or through laravel:

Artisan::call('queue:restart');
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement