validate(['id' => 'required|integer|min:1']); $message = MailMessage::where('direction', 'in')->findOrFail($data['id']); return $this->success(['email' => $message->email, 'subject' => $message->subject, 'text' => $message->payload['text'] ?? '']); } public function status() { $ready = Schema::hasTable('v2_mail_messages') && Schema::hasTable('v2_mail_quota_buckets') && Schema::hasTable('v2_mail_daily_reports'); return $this->success([ 'automatic_mail_level' => \App\Services\MailFlow\AutomaticMailPolicy::state()['level'] ?? null, 'settings' => Settings::publicSettings(), 'database_ready' => $ready, 'imap_available' => function_exists('imap_open'), 'quota' => $ready ? MailQuotaBucket::where('resets_at', '>', now())->get() : [], 'messages' => $ready ? MailMessage::whereIn('direction', ['in', 'out'])->latest('id')->limit(50) ->get(['id', 'direction', 'purpose', 'channel', 'email', 'status', 'error_code', 'fallback_reason', 'created_at']) : [], 'reports' => $ready ? MailDailyReport::latest('id')->limit(7)->get() : [], ]); } }