What problem does it solve? Sending transactional email from a Litestar application usually means wiring backend-specific SDKs, managing credentials, and rewriting call sites whenever the provider changes. This Skill provides a single EmailConfig plus EmailPlugin abstraction so backends can be swapped without touching application code, and tests can run against an in-memory outbox instead of real network calls. ## Core Features & Use Cases - Pluggable backends: Choose SMTPConfig, ResendConfig, SendGridConfig, MailgunConfig, or InMemoryConfig and swap them via one config object. - Dependency injection: EmailPlugin registers EmailService automatically, so handlers simply declare an email_service parameter and call async send_message or send_messages. - Testable email flows: InMemoryConfig captures messages in an outbox list for assertions, and slow sends can be queued through litestar-saq background tasks. - Use Case: A user signs up, the controller enqueues a SAQ task, the task renders a Jinja2 template and sends a welcome email via Resend, and the test suite asserts the message landed in the in-memory outbox. ## Quick Start Set up litestar-email in my Litestar app with the Resend backend and inject EmailService into a handler that sends a welcome email.