У меня есть приложение, в котором я отправляю push-уведомление, которое нормально, если пользователь вошел в приложение - однако, если они не / если они не прочитали уведомление в течение X минут, я хотел бы отправить им электронное письмо .
Я собираюсь использовать уведомления Laravel для создания уведомлений по почте, широковещательной рассылке и базе данных. По методу toMail()
я возвращаю почтовое сообщение с задержкой -
public function toMail($notifiable)
{
return (new \App\Mail\Order\NewOrder($this->order))
->delay(now()->addMinutes(10));
}
По истечении минут электронное письмо будет отправлено но до того, как отправка будет продолжена, я хотел бы выполнить проверку, чтобы увидеть, было ли уведомление push / базы данных уже помечено как прочитанное и было ли оно отменить отправку электронного письма. Единственный способ, которым я могу это сделать, - это привязаться к событию MessageSending
, которое запечено в Laravel -
// listen for emails being sent
'Illuminate\Mail\Events\MessageSending' => [
'App\Listeners\Notification\SendingEmail'
],
Единственная проблема заключается в том, что этот слушатель получает почтовое событие Swift, а не исходное почтовое сообщение, которое я отправлял, поэтому я не знаю, как его отменить. Есть идеи и заранее спасибо?