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.
Mail, Symfony Messenger + Mailer) — the answer is almost always the primitives.status/attempts/last_error, proof-of-send for support and compliance.Mail component plus the database queue driver already provides the equivalent, maintained behavior.Consider it only as a case study, or in the narrow legacy scenario:
Look elsewhere — or build on framework primitives — when:
Mail::queue() with the database or redis queue driver and a failed_jobs retry path.Verdict: do not adopt as a dependency. Mine it for the pattern, then delete it.
To executives: We evaluated jarjobs/swiftmailerdatabasebundle for email reliability. It's an abandoned Symfony plugin built for SwiftMailer, which reached end-of-life in 2021 — no maintenance, no users, no security posture. We should not depend on it. However, it highlights a legitimate requirement: transactional emails currently have no durable retry or audit trail. I recommend a small, framework-native ticket (days, not weeks) to queue outbound mail through our existing job infrastructure, giving us retries, an audit record of every send, and support-visible status — with no new vendor dependency.
To engineering: Don't add the bundle. Implement the pattern directly: write the message to a mail_outbox table (recipient, template, payload, idempotency key, status, attempts, last_error, sent_at), dispatch a queued job to send it, let the existing failed-job/retry machinery handle backoff, and add a scheduled sweep for stuck rows. On Laravel this is Mail::queue() + the database queue driver; on Symfony it's Messenger + Mailer. We get observability, deduplication, and compliance evidence for the cost of one table and one job class.
To the requesting team: If the ask was "we need emails to not get lost," the requirement is valid and we'll fund it. If the ask was "adopt this package," the answer is no — it's unmaintained, framework-mismatched, and superseded by first-party tooling.
How can I help you explore Laravel packages today?