mateusjunges / laravel-cloudflare-mail
Cloudflare Email Service transport for Laravel.
Package info
github.com/mateusjunges/laravel-cloudflare-mail
pkg:composer/mateusjunges/laravel-cloudflare-mail
Fund package maintenance!
Requires
- php: ^8.4
- illuminate/http: ^12.0|^13.0
- illuminate/mail: ^12.0|^13.0
- illuminate/support: ^12.0|^13.0
- symfony/mailer: ^7.2|^8.0
Requires (Dev)
- laravel/pint: ^1.20
- orchestra/testbench: ^10.0|^11.0
- pestphp/pest: ^4.0
- phpstan/phpstan: ^2.1
- rector/rector: ^2.0
README
A Laravel mail driver for Cloudflare Email Service, the outbound email API on Cloudflare's network. Once installed and configured, every Mail::send, queued mailable, and notification routes through Cloudflare via Laravel's mail abstraction.
Requirements
PHP 8.4 or newer. Laravel 12 or 13. A Cloudflare account with a verified sender domain and an API token that has the email sending permission.
Installation
composer require mateusjunges/laravel-cloudflare-mail
The service provider auto registers via Laravel's package discovery. No manual registration needed.
Quick start
Set the credentials in your .env:
CLOUDFLARE_EMAIL_ACCOUNT_ID=your-account-id CLOUDFLARE_EMAIL_API_TOKEN=your-api-token MAIL_MAILER=cloudflare
Add the cloudflare mailer to config/mail.php:
'mailers' => [ // ... 'cloudflare' => [ 'transport' => 'cloudflare', ], ],
Add the credentials block to config/services.php (the same convention Laravel's built in Postmark and SES drivers follow):
'cloudflare' => [ 'account_id' => env('CLOUDFLARE_EMAIL_ACCOUNT_ID'), 'api_token' => env('CLOUDFLARE_EMAIL_API_TOKEN'), ],
That's it. Your existing mailables and notifications will now be delivered through Cloudflare. Any key set on the mailer block overrides the matching value in services.cloudflare, which is handy for scoping a second mailer entry to a different account.
Documentation
The docs/ folder covers each topic in more depth:
- Installation. Composer install and provider registration.
- Configuration. Environment variables, config files, and Cloudflare dashboard setup.
- Usage. Sending mail through the facade, mailables, notifications, and queued jobs.
- Error handling. Exception types, Cloudflare error codes, and retry semantics.
Versioning
This package follows Semantic Versioning. The public API consists of the cloudflare mailer configuration keys and the Junges\CloudflareMail\Exceptions\CloudflareTransportException class. Every other class is marked @internal and may change in any release, so depend only on the documented configuration and the Laravel mail abstraction.
Testing
composer test
The composer cs script runs Rector, Pint, and PHPStan together.
Changelog
See CHANGELOG.md for what has changed recently.
Contributing
Contributions are welcome. Please open an issue to discuss substantial changes before submitting a pull request, and make sure composer test and composer cs pass.
Security
If you discover a security vulnerability, please review our security policy for how to report it.
Credits
License
The MIT License (MIT). See LICENSE for details.
