isSMTP(); $mail->Host = app_env('SMTP_HOST', 'mxe98c.netcup.net'); $mail->SMTPAuth = true; $mail->Username = app_env('SMTP_USERNAME', 'info@silias.ch'); $mail->Password = $smtpPassword; $mail->SMTPSecure = app_env('SMTP_SECURE', 'ssl'); $mail->Port = app_env_int('SMTP_PORT', 465, 1, 65535); $mail->CharSet = 'UTF-8'; $mail->isHTML(true); $mail->setFrom('info@silias.ch', 'Silias Zefix Export'); $mail->addAddress($emailAddress); $bccAddress = app_env('EXPORT_BCC_EMAIL'); if ($bccAddress !== '' && filter_var($bccAddress, FILTER_VALIDATE_EMAIL)) { $mail->addBCC($bccAddress); } $mail->addReplyTo('info@silias.ch', 'Silias KLG'); $mail->Subject = 'Ihr Export von Zefix ist bereit'; $downloadUrl = app_public_base_url() . '/download.php?token=' . rawurlencode($downloadToken); $escapedUrl = htmlspecialchars($downloadUrl, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); $retentionHours = app_env_int('DOWNLOAD_RETENTION_HOURS', 48, 1, 720); $mail->Body = 'Nutzen Sie den folgenden Link, um Ihre Daten herunterzuladen:
' . $escapedUrl . '

Der Link ist ' . $retentionHours . ' Stunden gültig.'; $mail->AltBody = "Nutzen Sie den folgenden Link, um Ihre Daten herunterzuladen:\n" . $downloadUrl . "\n\nDer Link ist " . $retentionHours . ' Stunden gültig.'; if ($smtpPassword === '') { error_log('SMTP password is not configured.'); return false; } if (!$mail->send()) { error_log('Export email failed: ' . $mail->ErrorInfo); return false; } return true; }