Mail :: queue Ошибка сериализации закрытия Laravel 5.1

Я обещаю, что это не просто еще один вопрос новичка в Mail :: queue. У меня было приложение Laravel 4.2, работающее с Push-очередями Iron.io
Затем я обновился до Laravel 5.1, и мои письма просто перестали работать. У меня есть UserController, с которого я отправляю владельцу регистрации электронное письмо с подтверждением учетной записи.

//Used for Mail
$data=['msg'=>$msg];
$details=array(
'email'=>$email,
'name'=>$name,
'subject'=>$subject,
'msg'=>$msg);
\Mail::queue(['text'=>'emails.contactus'],$data,
function($message) use ($email,$name,$subject) {
$message->from($email,$name);
$message->to(Config::get('app.site_support'))->subject($subject);
});

Iron.io настроен правильно с ключами и тому подобное. Приложение «Моя почта» и приложения для обработки очереди отличаются.

Я получаю ошибку

[2015-10-19 18:12:32] production.INFO: Queue POST Item received
[2015-10-19 18:12:32] production.ERROR: exception 'ErrorException' with message 'Class 'UserController' not found' in /var/www/app/vendor/jeremeamia/SuperClosure/src/SerializableClosure.php:130
Stack trace:
#0 [internal function]: Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'Class 'UserCont...', '/var/www/app...', 130, Array)
#1 /var/www/app/vendor/jeremeamia/SuperClosure/src/SerializableClosure.php(130): Closure->bindTo(NULL, 'UserController')
#2 [internal function]: SuperClosure\SerializableClosure->unserialize('a:5:{s:4:"code"...')
#3 /var/www/app/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php(300): unserialize('C:32:"SuperClos...')
#4 /var/www/app/vendor/laravel/framework/src/Illuminate/Mail/Mailer.php(286): Illuminate\Mail\Mailer->getQueuedCallable(Array)

Похоже, что Mail :: queue сериализует UserControl, который недоступен в приложении обработчика очереди / приема. Я попытался поместить UserController в приложение процессора, но все равно получаю ту же ошибку

0

Решение

Так что это просто для другой бедной души, которая сталкивается с той же проблемой.
После долгих поисков я прибег к отдельному классу Job, который отправляет электронную почту и получает $ data (для просмотра данных шаблона) и $ details (указав шаблон электронной почты, адрес электронной почты и тему «to») в своем конструкторе.

Тогда я Mail :: send в методе handle.

Я запускаю эту работу, используя метод диспетчеризации $ this-> dispatch, как они сказали в документации Laravel.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]