Add email integration for ticket system and IMAP inbound support

Email integration: IMAP polling via webklex/php-imap (M365/Zoho/MIAB
compatible), TicketEmailProcessor with 3-strategy ticket matching
(In-Reply-To, References, subject line [EZSCALE-{id}]), signature and
quote stripping, scheduled command every 2min.

Outbound: 4 notification classes (TicketCreated, CustomerReply,
StaffReply, StatusChanged) with email threading headers via
withSymfonyMessage(). Staff replies set Reply-To: support@ezscale.cloud.

Frontend: ticket reference chips on all pages, "Via Email" badges on
email-originated replies. 12 new tests (163 total, 816 assertions).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Claude Dev
2026-02-09 17:10:04 -05:00
parent a4cf7026bc
commit 015949a7f6
28 changed files with 1220 additions and 6 deletions

View File

@@ -24,6 +24,10 @@ class AppServiceProvider extends ServiceProvider
$this->app->singleton(RegisterResponseContract::class, RegisterResponse::class);
$this->app->singleton(BillingServiceFactory::class);
$this->app->singleton(ProvisioningFactory::class);
$this->app->bind(
\App\Services\Tickets\EmailServiceInterface::class,
\App\Services\Tickets\ImapEmailService::class
);
}
public function boot(): void