add email sent for event

This commit is contained in:
root
2026-04-18 10:51:22 -04:00
parent c13dcb07d1
commit f04934039e
8 changed files with 388 additions and 2 deletions
+40
View File
@@ -8,6 +8,7 @@ class EmailService
{
protected array $senders;
protected EmailController $mailer;
protected int $lastCcBatchCount = 0;
public function __construct()
{
@@ -73,6 +74,45 @@ class EmailService
return $allOk;
}
/**
* Send one email with all recipients in CC.
*/
public function sendCc(array $ccList, string $subject, string $message, string $fromKey = 'general', array $attachments = [], array $headers = []): bool
{
$this->lastCcBatchCount = 0;
if (empty($ccList)) {
return true;
}
$sender = $this->getSenderDetails($fromKey);
$to = trim((string) ($sender['email'] ?? ''));
if ($to === '' || !filter_var($to, FILTER_VALIDATE_EMAIL)) {
$fallback = trim((string) (getenv('SMTP_USER') ?: ''));
$to = filter_var($fallback, FILTER_VALIDATE_EMAIL) ? $fallback : 'no-reply@alrahmaisgl.org';
}
$attachmentsPayload = $this->normalizeAttachments($attachments);
$chunks = array_chunk(array_values($ccList), 10);
$this->lastCcBatchCount = count($chunks);
$allOk = true;
foreach ($chunks as $index => $chunk) {
$ok = $this->mailer->sendEmailWithCc($to, $chunk, $subject, $message, $fromKey, null, null, $attachmentsPayload);
if (!$ok) {
$allOk = false;
log_message('error', 'EmailService::sendCc failed for batch ' . ($index + 1) . ' of ' . count($chunks));
}
}
return $allOk;
}
public function getLastCcBatchCount(): int
{
return $this->lastCcBatchCount;
}
/**
* Normalize various attachment inputs to the format expected by EmailController.
*/