laravel-email-confirmation
laravel-email-confirmation copied to clipboard
Issue when running the email job
Whenever I run php artisan queue:listen
the mail job keeps failing repeatedly with the error below - any ideas? Running Laravel 5.5, followed the instructions carefully.
[2018-04-28 11:04:55] local.ERROR: Method __PHP_Incomplete_Class::handle() does not exist {"exception":"[object] (ReflectionException(code: 0): Method __PHP_Incomplete_Class::handle() does n ot exist at /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:135) [stacktrace] #0 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(135): ReflectionMethod->__construct(Object(__PHP_Incomplete_Class), 'handle') #1 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(115): Illuminate\\Container\\BoundMethod::getCallReflector(Array) #2 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): Illuminate\\Container\\BoundMethod::getMethodDependencies(Object(Illuminate\\Founda tion\\Application), Array, Array) #3 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}() #4 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\ Application), Array, Object(Closure)) #5 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/Container.php(549): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application) , Array, Array, NULL) #6 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\\Container\\Container->call(Array) #7 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(114): Illuminate\\Bus\\Dispatcher->Illuminate\\Bus\\{closure}(Object(__PHP_Incomplete_Class) ) #8 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(__PHP_Incomplet e_Class)) #9 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\\Pipeline\\Pipeline->then(Object(Closure)) #10 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(49): Illuminate\\Bus\\Dispatcher->dispatchNow(Object(__PHP_Incomplete_Class), false) #11 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(76): Illuminate\\Queue\\CallQueuedHandler->call(Object(Illuminate\\Queue\\Jobs\\BeanstalkdJob) , Array) #12 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(319): Illuminate\\Queue\\Jobs\\Job->fire() #13 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(269): Illuminate\\Queue\\Worker->process('beanstalkd', Object(Illuminate\\Queue\\Jobs\\Beanstalk dJob), Object(Illuminate\\Queue\\WorkerOptions)) #14 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(226): Illuminate\\Queue\\Worker->runJob(Object(Illuminate\\Queue\\Jobs\\BeanstalkdJob), 'beansta lkd', Object(Illuminate\\Queue\\WorkerOptions)) #15 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(101): Illuminate\\Queue\\Worker->runNextJob('beanstalkd', 'default', Object(Illumin ate\\Queue\\WorkerOptions)) #16 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(85): Illuminate\\Queue\\Console\\WorkCommand->runWorker('beanstalkd', 'default') #17 [internal function]: Illuminate\\Queue\\Console\\WorkCommand->handle() #18 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(29): call_user_func_array(Array, Array) #19 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(87): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}() #20 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(31): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\ \Application), Array, Object(Closure)) #21 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Container/Container.php(549): Illuminate\\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application ), Array, Array, NULL) #22 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Illuminate\\Container\\Container->call(Array) #23 /var/www/portal.testsite.com/vendor/symfony/console/Command/Command.php(252): Illuminate\\Console\\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illu minate\\Console\\OutputStyle)) #24 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Console/Command.php(167): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\ Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle)) #25 /var/www/portal.testsite.com/vendor/symfony/console/Application.php(946): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Com ponent\\Console\\Output\\ConsoleOutput)) #26 /var/www/portal.testsite.com/vendor/symfony/console/Application.php(248): Symfony\\Component\\Console\\Application->doRunCommand(Object(Illuminate\\Queue\\Console\\WorkCommand), Obje ct(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput)) #27 /var/www/portal.testsite.com/vendor/symfony/console/Application.php(148): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Objec t(Symfony\\Component\\Console\\Output\\ConsoleOutput)) #28 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Console/Application.php(82): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\In put\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput)) #29 /var/www/portal.testsite.com/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(125): Illuminate\\Console\\Application->run(Object(Symfony\\Component\\Console\\Inp ut\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput)) #30 /var/www/portal.testsite.com/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\O utput\\ConsoleOutput)) #31 {main} "}
If anybody needs a quickfix for this issue, just implement the ShouldQueue
contract
app/Notifications/ConfirmEmail.php
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
class ConfirmEmail extends Notification implements ShouldQueue
{
use Queueable;
public $user;
/**
* Create a new job instance.
*
* @param \App\User $user
* @return void
*/
public function __construct(\App\User $user)
{
$this->user = $user;
}
/**
* Execute the job.
*
*/
public function handle()
{
$this->toMail($this->user);
}
/**
* Get the notification's delivery channels.
*
* @return array
*/
public function via()
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->subject(__('confirmation::confirmation.email-title'))
->line(__('confirmation::confirmation.email-title'))
->line(__('confirmation::confirmation.email-intro'))
->action(__('confirmation::confirmation.email-button'),
url("confirmation/$notifiable->id/$notifiable->confirmation_code"));
}
}
`