merge prod to main
This commit is contained in:
Regular → Executable
+40
@@ -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.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user