public static function send(array $params): array { $to = $params['to'] ?? null; $template = $params['template'] ?? null; $lang = $params['lang'] ?? 'de'; $data = $params['data'] ?? []; if (!$to || !$template) { self::log("ERROR → Fehlende Parameter: to oder template"); return ['success' => false, 'error' => 'to und template sind Pflichtfelder']; } // Template suchen $possibleFiles = [ "/var/www/html/C/templates/email/{$template}.{$lang}.html", "/var/www/html/C/templates/email/{$template}.de.html", "/var/www/html/C/templates/email/{$template}.html" ]; $templateFile = null; foreach ($possibleFiles as $file) { if (file_exists($file)) { $templateFile = $file; break; } } if (!$templateFile) { $error = "Template nicht gefunden: {$template}"; self::log("ERROR → $to | $error"); return ['success' => false, 'error' => $error]; } $html = file_get_contents($templateFile); // Platzhalter sicher ersetzen (wichtig: immer als String behandeln) foreach ($data as $k => $v) { $search = '{{' . $k . '}}'; $replace = $v !== null ? htmlspecialchars((string)$v, ENT_QUOTES, 'UTF-8') : ''; $html = str_replace($search, $replace, $html); } // Subject extrahieren preg_match('/
🛒 Ihr Warenkorb ist leer
Fügen Sie Produkte aus den Angeboten hinzu