feat: email blast for certificates (Fasa 8)

- CertificateReadyMail: Mailable with Malay HTML email template
- SendCertificateEmailJob: dispatch per-certificate email, log to email_logs
- Email template: HTML with download link, program details, branding

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Saufi
2026-05-16 22:36:32 +08:00
parent 2ddc7e3caf
commit b066a44326
3 changed files with 169 additions and 3 deletions

View File

@@ -0,0 +1,31 @@
<?php
namespace App\Mail;
use App\Models\Certificate;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
class CertificateReadyMail extends Mailable
{
use Queueable, SerializesModels;
public function __construct(public readonly Certificate $certificate) {}
public function envelope(): Envelope
{
return new Envelope(
subject: 'Sijil Digital Program — ' . $this->certificate->program->title,
);
}
public function content(): Content
{
return new Content(
view: 'emails.certificate-ready',
);
}
}