xammie/mailbook
Laravel dev tool to preview and inspect Mailables and Notifications without triggering them in your app. Register emails in a generated routes/mailbook.php file (with DI or closures) and browse previews at /mailbook.
App\Mail) or Notification classes (App\Notifications)./mailbook) for interactive previewing, including variants, attachments, and inline images.MailFake.composer require, php artisan mailbook:install) and integrates via service provider registration.vendor:publish --tag="mailbook-*").| Risk Area | Assessment | Mitigation Strategy |
|---|---|---|
| Database Rollback | May conflict with existing transactions or migrations. | Test in staging; disable if using afterCommit hooks or non-transactional DB ops. |
| Queued Mails | ShouldQueue mailables may not render correctly in preview. |
Use Mail::fake() alongside Mailbook for queue testing. |
| Performance | Heavy email templates (e.g., complex Blade loops) may slow previews. | Cache previews or use --dev mode for development only. |
| Security | Exposes /mailbook route; ensure it’s not public-facing. |
Restrict via middleware (e.g., auth, trusted-proxy). |
| Dependency Bloat | Adds ~500KB (Tailwind, Alpine.js) to dev dependencies. | Justify with team productivity gains; monitor bundle size. |
/mailbook require admin access or be public for all devs?MailFake (unit testing) or manual SMTP testing (e.g., Mailtrap).MailFake is programmatic.composer require --dev xammie/mailbook
php artisan mailbook:install
routes/mailbook.php:
Mailbook::add(WelcomeEmail::class);
Mailbook::add(InvoiceNotification::class)->variant('paid', fn() => ...);
database_rollback: true).php artisan mail:send).php artisan mailbook:test).composer remove xammie/mailbook and delete routes/mailbook.php.MailFake.| Component | Compatibility Notes |
|---|---|
| Laravel Versions | 10–13 (tested); Laravel 14 may require updates (monitor changelog). |
| PHP Versions | 8.1–8.5 (CI includes 8.5; drop 8.1 if using newer Laravel). |
| Database | Supports MySQL, PostgreSQL, SQLite (rollback uses transactions). |
| Mail Drivers | Works with all Laravel mail drivers (preview only; sending uses default driver). |
| Testing Frameworks | No direct Pest/Laravel Test integration (manual previews only). |
| Frontend | Uses Tailwind CSS (no conflicts if app uses Tailwind). |
mailbook.php → Register mailables → Test previews.DB::beginTransaction() support (most Laravel apps).app()->setLocale() support (standard in Laravel)./mailbook route in internal wiki.npm run dev).--verbose flag for mailbook:install if issues arise.php artisan cache:clear) if previews slow down..github/workflows/ for optional screenshot testing:
- name: Test Mailbook Previews
run: php artisan mailbook:test --screenshot
/mailbook: Verify route registration in routes/mailbook.php.database_rollback temporarily.storage/logs/laravel.log for Mailbook-related errors.--dev mode only; avoid in CI for large templates.memory_limit increased in php.ini./mailbook workflow.Mailbook::stats() (if extended) to identify underused features.| Scenario | Impact | Mitigation |
|---|---|---|
| Database rollback fails | Corrupted test data. |
How can I help you explore Laravel packages today?