elgibor-solution / laravel-email
Laravel package for multi-provider broadcast email with SendGrid, templates, events tracking, suppression list, and anti-spam optimizations.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/elgibor-solution/laravel-email
Requires
- php: >=8.1
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/http: ^10.0|^11.0|^12.0
- illuminate/queue: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- sendgrid/sendgrid: ^8.1
README
Package Laravel untuk broadcast email multi-provider (SendGrid-ready) dengan template, tracking event, global suppression list, dan optimasi deliverability.
Install
composer require elgibor-solution/laravel-email php artisan vendor:publish --tag=laravel-email-config php artisan vendor:publish --tag=laravel-email-migrations php artisan migrate
Tambahkan ENV:
SENDGRID_API_KEY=SG_xxx LAREMAIL_STRATEGY=round_robin LAREMAIL_DEFAULT=sendgrid_1 LAREMAIL_RPM=600
Jalankan queue:
php artisan queue:work
Fitur
- Multi-account provider (round-robin/fixed)
- Driver SendGrid (bisa ditambah driver baru via interface)
- Template dengan placeholder:
{{name}},{{email}},{{unsubscribe_url}},{{tracking_pixel}} - Broadcast + throttling berdasarkan RPM
- Tracking event via webhook (open, bounce, unsubscribe, spamreport, dropped, ...)
- Global suppression list (unsubscribe/bounce/spam/manual)
- Auto
List-Unsubscribeheader + link unsubscribe per penerima
Endpoint (prefix /laravel-email)
POST /templates— buat templateGET /templates— list templatePOST /broadcasts— buat broadcastPOST /broadcasts/{id}/recipients— tambah penerimaPOST /broadcasts/{id}/start— mulai kirim (queue + throttle)POST /webhook/sendgrid— endpoint webhookGET /t/{token}— tracking pixel 1×1GET /u/{token}— unsubscribeGET /suppressions— list suppressionPOST /suppressions— tambah/update suppressionDELETE /suppressions/{id}— hapus suppression
Global Suppression List
- Tabel:
le_suppressions (email UNIQUE, reason ENUM) - Otomatis terisi dari webhook:
unsubscribe,bounce/dropped→ reason=bounce,spamreport→ reason=spam - Dicek sebelum pengiriman di
SendEmailJob→ email diskip jika ada di suppression list
Tips Deliverability
- Setup SPF/DKIM, warm-up domain/IP, kirim ke segment engaged, gunakan custom tracking domain jika ada.
- Hindari spam trigger words, tambah plain-text version, dan pertahankan ratio teks/HTML yang sehat.
Ekstensi Driver
Implement ESolution\LaravelEmail\Contracts\MailDriver, daftarkan di config/laravel_email.php → providers.
License
MIT