whiteoctober/swiftmailerdbbundle
A Symfony bundle that stores SwiftMailer's spooled emails in a database table instead of memory or files. Queued messages survive restarts and can be sent by cron or workers across multiple servers, delivering reliably without losing mail when a process crashes.
send() is acceptable. A DB spool converts "we hope it sent" into a persisted row with a status.queue:table, failed_jobs, and queueable mailables (Mail::queue) give you DB-backed spooling with retries, backoff, and failure inspection for free.Consider it when:
Look elsewhere when:
To executives: Transactional email failing silently is a support-cost and revenue problem, not an engineering detail. Durable spooling is the fix — but the off-the-shelf package here is stale (last release 2018, ~31 stars, no dependents) and sits on SwiftMailer, which is end-of-life. Recommendation: adopt the pattern, not the dependency. Replicating it natively is a small, contained piece of work and avoids putting an unmaintained library on a critical path.
To engineering: The idea is sound and small — persist outbound mail to a table, drain it with a worker or cron, retry failures, keep a status column for support. On Laravel we get this from the existing queue and mailable infrastructure; on modern Symfony it's Mailer + Messenger. If we're on a legacy SwiftMailer stack and need this in a week, fork the bundle's spool class as reference, write the migration and worker in-house, and keep the dependency out of composer.json. Either way, we own the code — which is the correct outcome for something this small and this close to the customer.
How can I help you explore Laravel packages today?