solotony
@solotony
покоряю пик Балмера

Как отправлять письма через очередь что бы текст письма формировался до постановки в очередь?

При отправке писем через очередь Laravel

Mail::to($email)->queue(new \App\Mail\NotifyReserveCreated($reserve, true));

сами тексты писем формируются уже в процессе обработки очереди. Причем если туда передается модель Laravel - она сохраняется и восстанавливается в очереди. Но иногда происходит удаление этой модели еще до того как письмо отправилось, и в итоге происходит ошибка.

Как можно (штатными средствами ларавель) отправлять письма так, что бы текст формировался еще до постановки в очередь ?
  • Вопрос задан
  • 349 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Yan-s
Вместо модели передавайте сформированный текст или другие необходимые вам данные.
Ответ написан
Комментировать
mr_T
@mr_T
Web-разработчик
2 варианта:
1) сделать свой класс сообщения, который будет сохранять в поле класса текст письма $this->content = (string)view('mails.message', $data).
2) передавать в класс сообщения не сам объект модели, а только массив с нужными атрибутами $model->toArray()/getAttributes(), например.

Скорее всего вы используете примесь SerializesModels, которая содержит логику сериализации (внезапно) модели. Она, собственно, и сохраняет только идентификатор и тип модели, а впоследствии по этим данным восстанавливает всю модель.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы