ebbbang / laravel-mailroom
A Laravel mail driver that stores outgoing mail in your database, plus a mailbox to read it.
Requires
- php: ^8.2
- illuminate/cache: ^11.0 || ^12.0 || ^13.0
- illuminate/console: ^11.0 || ^12.0 || ^13.0
- illuminate/contracts: ^11.0 || ^12.0 || ^13.0
- illuminate/database: ^11.0 || ^12.0 || ^13.0
- illuminate/filesystem: ^11.0 || ^12.0 || ^13.0
- illuminate/http: ^11.0 || ^12.0 || ^13.0
- illuminate/mail: ^11.0 || ^12.0 || ^13.0
- illuminate/pagination: ^11.0 || ^12.0 || ^13.0
- illuminate/routing: ^11.0 || ^12.0 || ^13.0
- illuminate/session: ^11.0 || ^12.0 || ^13.0
- illuminate/support: ^11.0 || ^12.0 || ^13.0
- illuminate/validation: ^11.0 || ^12.0 || ^13.0
- illuminate/view: ^11.0 || ^12.0 || ^13.0
- symfony/mailer: ^7.0 || ^8.0
- symfony/mime: ^7.0 || ^8.0
Requires (Dev)
- brianium/paratest: ^7.4.9
- driftingly/rector-laravel: ^2.5
- laravel/pint: ^1.18
- orchestra/testbench: ^9.0 || ^10.0 || ^11.0
- phpunit/phpunit: ^10.5 || ^11.0 || ^12.0 || ^13.0
- rector/rector: ^2.5
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Keep every email your app sends. Read it in a real mailbox.
A Laravel mail driver that stores outgoing mail in your database, plus a mailbox to read it.
MAIL_MAILER=log flattens a message into a log line and throws away the attachments. MAIL_MAILER=array forgets everything at the end of the request. Mailroom keeps the whole thing: full MIME, attachments, embedded images, tags, metadata, custom headers. And it gives you somewhere to look at it.
Documentation: ebbbang.github.io/laravel-mailroom
Installation
composer require --dev ebbbang/laravel-mailroom
php artisan mailroom:install
Open /mailroom and your next email will be there. Requires PHP 8.2+ and Laravel 12 or 13 (11 best-effort).
Documentation
- Installation: the installer's flags, doing it by hand, and requirements
- Reading mail: mailboxes and people, the keyboard, read state, exports and attachment previews
- Access control: who can open the mailbox outside
local - Forwarding a message: send a copy to a real inbox
- Spam check: a SpamAssassin score through Postmark
- Staging and QA: a mailbox your testers share
- Production: keeping it off, pruning and wiping
- Configuration: every setting and environment variable
- Events and platforms:
MessageStored, Laravel Cloud, Octane and caveats - Alternatives: other packages, and Mailpit and Helo
The same pages are in docs/, readable here on GitHub.
Changelog
See CHANGELOG.md.
Contributing
See CONTRIBUTING.md. It covers the workbench demo mailbox, which seeds one message per branch of the UI so you can see every state without composing mail by hand, and running the docs site locally.
Please note the Code of Conduct.
Security
Please do not open a public issue for a vulnerability. SECURITY.md explains how to report privately, and documents the threat model. The mailbox renders attacker-controlled content by design, and how that is contained is worth reading before reporting.
Credits
License
MIT. See LICENSE.
