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

1.1 2025-10-06 09:34 UTC

This package is auto-updated.

Last update: 2025-10-06 09:35:31 UTC


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-Unsubscribe header + link unsubscribe per penerima

Endpoint (prefix /laravel-email)

  • POST /templates — buat template
  • GET /templates — list template
  • POST /broadcasts — buat broadcast
  • POST /broadcasts/{id}/recipients — tambah penerima
  • POST /broadcasts/{id}/start — mulai kirim (queue + throttle)
  • POST /webhook/sendgrid — endpoint webhook
  • GET /t/{token} — tracking pixel 1×1
  • GET /u/{token} — unsubscribe
  • GET /suppressions — list suppression
  • POST /suppressions — tambah/update suppression
  • DELETE /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.phpproviders.

License

MIT