9cb99a7ba7
ImportSingleMessageAsync now fetches the message + connection through the provider-neutral seam (Email.GetMessageAsync/GetConnectionAsync), mapping the neutral ExternalAttachmentId onto CorrespondenceAttachmentMetadata. The controller's import path no longer touches Gmail directly. OAuth lifecycle, the rich connection-status DTO, and Gmail candidate ranking stay on IGmailOAuthService until a second provider (Microsoft/IMAP) forces the contract shape. 135/135 green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>