gearbox-solutions / mail-log
Mail Logger
Fund package maintenance!
:vendor_name
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0
- inertiajs/inertia-laravel: ^2.0
- spatie/laravel-package-tools: ^1.16
- tightenco/ziggy: ^2.5
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.20
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^9.0.0||^8.22.0
- pestphp/pest: ^2.34
- pestphp/pest-plugin-arch: ^2.7
- pestphp/pest-plugin-laravel: ^2.3
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-deprecation-rules: ^1.1
- phpstan/phpstan-phpunit: ^1.3
- spatie/laravel-ray: ^1.35
README
This is a package built for Laravel to log all emails sent from the application. It is built using the following stack:
The package should do the following:
- Provide a migration to create a new
mail_logs
table in the database to store the emails. - add a listener for the
MessageSending
event. This should save the email to the database. - add a listener for the
MessageSent
event. This should update the status of the email to sent. - Provide a controller and routes to handle the display of the emails in the UI.
- Provide an artisan command to delete all logged emails from the database.
- Provide an artisan command to delete all logged emails older than a certain number of days.
Installation
Install using composer:
composer require gearbox-solutions/mail-log
Publish and run the migrations to add the mail-logs table:
php artisan vendor:publish --tag="mail-log-migrations"
php artisan migrate
You can publish the config file with:
php artisan vendor:publish --tag="mail-log-config"
Usage
Web
Visit the /mail-log
route to view the emails.
Commands
Delete all mail logs
php artisan mail-log:delete-all
Delete mail logs older than a certain number of days
php artisan mail-log:delete-old {days}
Skip confirmation prompt by adding the --yes
flag
php artisan mail-log:delete-old {days} --yes
Configuration
Authentication and middleware
All messages are visible at the /mail-logs
url. By default, this is protected by the Illuminate\Session\Middleware\AuthenticateSession
middlware. This means that any logged-in user can see all email messages sent. You can change this by changing the middleware
array in the published config/mail-log.php
file.
Database
By default, this package stores all emails sent by your server in the mail-logs
table of the default database. You can change the database connection used by adjusting the database
attribute in the published config/mail-log.php
Development
Developing this package is done using two local servers. The first is the Testbench Laravel server which is used to serve the app. The second is Vite, which builds the front-end assets.
Run the development Laravel server using
composer run serve
Run the Vite server using
npm run dev
Visit http://localhost:8000/mail-log to view the test emails.
Building for distribution
Front-end assets are compiled using Vite. The final output is in the dist
directory. Assets built to this directory are served by laravel through a configuration in the web.php
routes file.
To compile the assets for distribution, run:
npm run build
Commit these files to version control after running the build command.
Laravel controllers and other php files are delivered as is, and do not need any special processing.
Testing
Test are handled by Orchestra Testbench. You can run tests with the command:
composer test
License
The MIT License (MIT). Please see License File for more information.