findBatch($this->batchId); if (!$batch) return; if (in_array((string)$batch->status, ['canceled','sent','failed','partial'], true)) return; $item = \DB::table('admin_mail_batch_items')->where('id',$this->itemId)->first(); if (!$item) return; if ((string)$item->status !== 'queued') return; $svc->sendItem($batch, $item); $svc->refreshBatchProgress($this->batchId); // 아직 queued가 남아있으면 계속 뿌리기(가벼운 자기재호출) if (\DB::table('admin_mail_batch_items')->where('batch_id',$this->batchId)->where('status','queued')->exists()) { DispatchMailBatchJob::dispatch($this->batchId)->onQueue('mail'); } } }