django-anymail is a Django library that provides a unified interface for sending transactional email through multiple Email Service Providers (ESPs) such as Amazon SES, Mailgun, SendGrid, Postmark, SparkPost, Mailjet, Brevo, Resend, Mailtrap, Postal, Scaleway, Unisender Go, and MailerSend. It extends Django's built-in email framework with ESP-specific features like tags, metadata, inline images, merge data, templates, and click/open tracking. The library also handles inbound email and tracking webhooks, normalizing ESP-specific events into Django signals. Architecture follows a backend pattern: each ESP has a concrete EmailBackend class that implements `build_message_payload` and `post_to_esp`, with common logic in base classes (`AnymailRequestsBackend`, `BasePayload`). Webhook views are similarly structured with base classes for signature validation and event dispatch. The codebase is well-tested with both mock unit tests and live integration tests run weekly against real ESP APIs. It is a mature, actively maintained library with a clean separation of concerns and extensive documentation.
Bamboo is a mature, well-architected Elixir library for composing and delivering emails through adapters. It provides a clean functional API for building email structs, a powerful address normalization system via the `Bamboo.Formatter` protocol, and built-in adapters for Mailgun, Mandrill, SendGrid, local in-memory storage, and testing. The library supports background delivery, email interceptors, attachments, plug-based preview of sent emails, and comprehensive test helpers. Production code is separated from optional Phoenix view integration (extracted to bamboo_phoenix). The architecture uses behaviours for adapters and delivery strategies, making it extensible. It is actively maintained, with recent commits and CI passing on Elixir 1.17-1.19.