| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?php
- // Αρχείο: /var/www/html/hockey-cms/config/functions.php
- use PHPMailer\PHPMailer\PHPMailer;
- use PHPMailer\PHPMailer\Exception;
- function sendTemplateEmail($pdo, $template_key,$to_email, $placeholders,$lang = 'el') {
- if (empty($to_email)) return false;
- // 1. Φόρτωση SMTP ρυθμίσεων από τη βάση
- $settingsStmt =$pdo->query("SELECT `key`, `value` FROM settings WHERE `key` LIKE 'smtp_%' OR `key` LIKE 'mail_from_%'");
- $smtp_settings =$settingsStmt->fetchAll(PDO::FETCH_KEY_PAIR);
- // 2. Φόρτωση Template από τη βάση
- $tplStmt =$pdo->prepare("SELECT * FROM email_templates WHERE template_key = ?");
- $tplStmt->execute([$template_key]);
- $tpl =$tplStmt->fetch(PDO::FETCH_ASSOC);
- if (!$tpl) return false;
- $subject = ($lang === 'en') ? $tpl['subject_en'] :$tpl['subject_el'];
- $body = ($lang === 'en') ? $tpl['body_en'] :$tpl['body_el'];
- // 3. Αντικατάσταση μεταβλητών (placeholders)
- foreach ($placeholders as $key =>$val) {
- $subject = str_replace('{' .$key . '}', $val,$subject);
- $body = str_replace('{' .$key . '}', $val,$body);
- }
- // 4. Αποστολή με PHPMailer
- require_once __DIR__ . '/../vendor/autoload.php';
- $mail = new PHPMailer(true);
- try {
- $mail->isSMTP();$mail->Host = $smtp_settings['smtp_host'] ?? '';$mail->SMTPAuth = true;
- $mail->Username =$smtp_settings['smtp_username'] ?? '';
- $mail->Password =$smtp_settings['smtp_password'] ?? '';
-
- $encryption =$smtp_settings['smtp_encryption'] ?? 'tls';
- $mail->SMTPSecure = ($encryption === 'ssl') ? PHPMailer::ENCRYPTION_SMTPS : PHPMailer::ENCRYPTION_STARTTLS;
-
- $mail->Port = (int)($smtp_settings['smtp_port'] ?? 587);$mail->CharSet = 'UTF-8';
- $from_email =$smtp_settings['mail_from_address'] ?? 'info@hockeycms.com';
- $from_name = $smtp_settings['mail_from_name'] ?? 'Hockey CMS';$mail->setFrom($from_email,$from_name);
- $mail->addAddress($to_email);
- $mail->isHTML(true);
- $mail->Subject =$subject;
- $mail->Body = nl2br($body);
- return $mail->send();
- } catch (Exception $e) {
- return false;
- }
- }
|