frontier-sh / sinkhole-laravel
Laravel mail transport for Sinkhole — a Cloudflare Worker email trap
v1.0.0
2026-03-30 22:10 UTC
Requires
- php: ^8.1
- illuminate/mail: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
README
A Laravel mail transport that sends all outgoing email to a Sinkhole instance — a Cloudflare Worker email trap with a web UI.
Use it in staging or local development to capture emails without delivering them to real inboxes.
Requirements
- PHP 8.1+
- Laravel 10, 11, or 12
Installation
composer require frontier-sh/sinkhole
The service provider is auto-registered via Laravel's package discovery.
Configuration
Add the transport to config/mail.php:
'mailers' => [ // ... 'sinkhole' => [ 'transport' => 'sinkhole', 'endpoint' => env('SINKHOLE_ENDPOINT'), 'api_key' => env('SINKHOLE_API_KEY'), 'channel' => env('SINKHOLE_CHANNEL', 'default'), ], ],
Set your environment variables:
MAIL_MAILER=sinkhole SINKHOLE_ENDPOINT=https://your-worker.workers.dev SINKHOLE_API_KEY=your-api-key SINKHOLE_CHANNEL=staging
| Variable | Description |
|---|---|
SINKHOLE_ENDPOINT |
The URL of your Sinkhole Worker |
SINKHOLE_API_KEY |
An API key created from the Sinkhole web UI |
SINKHOLE_CHANNEL |
Optional label to group emails (defaults to default) |
What gets captured
- To, From, Subject
- HTML and plain text bodies
- All email headers
- Attachments (base64-encoded, stored in R2)
- Custom headers like
X-TagandX-Metadata-*are displayed in the Sinkhole UI
License
MIT