codeat3/laravel-log-emails
Laravel package that logs outgoing emails instead of sending them, making it useful for local development and testing. Capture messages to inspect recipients, subjects, and content without configuring a real mail service or risking accidental delivery.
email_logs table plus a listener on MessageSending/MessageSent.Consider it when:
1.0.0 is a reasonable bet for a non-critical, easily reversible concern.Look elsewhere or hold when:
1.0.0 with a one-line changelog means unproven migration paths, no track record on breaking changes, and unknown handling of large payloads or attachments. Sandbox it first; check license, test coverage, open issues, and whether migrations are publishable and reversible.Also confirm the exact semantics of "dump the emails in the database" in your evaluation — capture-on-send, a mailer transport that stores instead of sends, or an import of an existing mailbox — since the product implications differ materially.
For executives: This is a small, low-cost capability that gives us a permanent, searchable record of every email our product sends. Today, when a customer says "I never got that email," we have no first-party answer — we either trust an outside vendor's dashboard or we can't tell them anything. This package puts that record in our own database, which improves support response time and gives us the raw material for future customer-facing email history. It is not a customer-facing feature on its own, and it does not tell us whether an email was opened or delivered — that still comes from our sending provider. Risk is low and reversible; the main decision it forces is how long we keep message bodies and how we handle personal data inside them.
For engineering: Adopt as an infrastructure-level concern, not a product feature. It is a Laravel package at its first stable release that persists outgoing mailables to a database table. Expect to own the operational edges: retention/cleanup jobs, a decision on storing full HTML bodies versus a redacted preview, attachment handling, and whether writes go to the primary or a secondary connection. Evaluate in a sandbox against a representative sending volume before committing, and confirm it hooks the mail events rather than replacing the mail transport, so we do not silently stop delivering mail. Budget roughly a day to spike it, plus ongoing cost of the cleanup job. If it disappoints, removing it is a migration and a listener — no architectural lock-in.
How can I help you explore Laravel packages today?