find($this->emailLogId); if (! $log) { return; } if ($log->status === EmailLogStatus::Sent) { return; } $start = microtime(true); $log->status = EmailLogStatus::Sending; $log->started_at = now(); $log->attempt = (int) ($log->attempt ?: 0) + 1; $log->save(); try { /** @var EmailSender $sender */ $sender = app(EmailSender::class); $result = $sender->sendFromLog($log); $log->status = EmailLogStatus::Sent; $log->sent_at = now(); $log->duration_ms = (int) round((microtime(true) - $start) * 1000); $log->save(); } catch (Throwable $e) { $log->status = EmailLogStatus::Failed; $log->failed_at = now(); $log->error_message = $e->getMessage(); $log->duration_ms = (int) round((microtime(true) - $start) * 1000); $log->save(); throw $e; } } }