jarjobs/swiftmailerdatabasebundle
A Symfony bundle that stores SwiftMailer messages in a database via Doctrine, making it easy to queue, inspect, and manage outgoing email without filesystem or memory spooling.
Architecture fit
JarJobs\SwiftMailerDatabaseBundle), not a Laravel package. Its integration surface is Symfony's bundle registration (AppKernel/bundles.php), the Symfony DI container, and — based on the name and typical implementations of this pattern — a Doctrine ORM entity plus Doctrine Migrations for the spool table.spool mechanism. SwiftMailer was deprecated in November 2021 and replaced by Symfony Mailer; Laravel dropped SwiftMailer in favor of Symfony Mailer in Laravel 9. On Laravel 9+ this package cannot attach to the mail layer at all, because the underlying transport abstraction no longer exists.Mail::queue() on top of the database queue driver (jobs and failed_jobs tables). Adopting this package would duplicate a first-class framework capability with an unmaintained third-party shim.Integration feasibility
Technical risk
jobs table would also create — but with framework-level tooling (queue:prune-failed, model:prune) already available.Key questions
queue, RateLimiter, database/audit tables, retry_after) rather than to a spool.Stack fit
Migration path
Mail::queue() / Mail::later() with the database queue driver; QUEUE_CONNECTION=database, php artisan queue:work.failed_jobs review; queue:retry.mail_log table written by a MessageSent listener, decoupled from delivery mechanics.model:prune or a scheduled DELETE ... WHERE created_at < ?.SwiftMailerDatabaseBundle-equivalent Laravel command + model, and add concurrency tests (two workers, one spool) before shipping.Compatibility
Sequencing
Mail::queue() + database driver satisfies the requirement in a staging environment (1–2 days).Maintenance
failed_jobs tooling, and pruning commands upgrade with the framework for free.Support
Scaling
SKIP LOCKED-style semantics, multi-worker flushes risk double-sends or serialized throughput.jobs table has the same shape of problem, but the framework provides the tuning surface (retry_after, maxJobs, backoff, queue:clear) and the community has documented scaling patterns. Redis/SQS is a drop-in upgrade path; this package offers none.Failure modes
Ramp-up
TPM recommendation: Do not adopt. Score 0 with zero dependents and zero stars is a decisive signal, and the framework incompatibility makes it moot on any supported Laravel version. The underlying requirement is real and worth funding — but it should be met with Mail::queue() on the database driver plus a separate audit table, which is cheaper, framework-supported, upgrade-safe, and carries none of the abandonment risk above. Escalate the decision to architecture for sign-off, and document the rejected alternative so it is not re-proposed.
How can I help you explore Laravel packages today?