����JFIF��`�`�����Viewing File: /home/u820193700/domains/spiti2026im.in/public_html/api/mailer.php
<?php
// api/mailer.php (Updated for Hostinger)
require_once 'mail_config.php';
require_once 'email_template.php';

function send_registration_email($to, $name, $type = 'full', $details = [])
{
    try {
        $subject = ($type === 'full') ? "Registration Successful: Spiti Valley Expedition 2026" : "Adventure Awaits: Spiti Valley Expedition 2026 Info";
        $message = get_registration_template($name, $type, $details);
        $status = send_smtp_mail_html($to, $subject, $message, MAIL_INFO_USER, MAIL_INFO_PASS);
        
        if ($status !== 'SENT' && defined('MAIL_SIMULATE_ON_FAILURE') && MAIL_SIMULATE_ON_FAILURE === true) {
            $is_local = (php_sapi_name() === 'cli') || (isset($_SERVER['REMOTE_ADDR']) && in_array($_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1'])) || (isset($_SERVER['SERVER_NAME']) && $_SERVER['SERVER_NAME'] === 'localhost');
            if ($is_local) { return true; }
        }

        return ($status === 'SENT') ? true : $status;
    } catch (Exception $e) {
        error_log("Registration Mailer Error: " . $e->getMessage());
        return "Internal Error: " . $e->getMessage();
    }
}

function send_smtp_mail_html($to, $subject, $html_message, $smtp_user, $smtp_pass)
{
    $log_file = __DIR__ . "/mailer_debug.log";
    $log = function($msg) use ($log_file) {
        file_put_contents($log_file, "[" . date('Y-m-d H:i:s') . "] " . $msg . "\n", FILE_APPEND);
    };

    $try_send = function($port) use ($to, $subject, $html_message, $smtp_user, $smtp_pass, $log) {
        $host = MAIL_HOST;
        $from_name = MAIL_FROM_NAME;
        $scheme = ($port == 465) ? "ssl://" : "";
        $server_domain = $_SERVER['SERVER_NAME'] ?? 'spiti2026im.in';
        
        $socket = null;
        for ($i = 1; $i <= 2; $i++) {
            $log("Attempt $i: Connecting to $scheme$host:$port...");
            $context = stream_context_create(['ssl' => ['verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true]]);
            $socket = @stream_socket_client($scheme . $host . ":" . $port, $errno, $errstr, 15, STREAM_CLIENT_CONNECT, $context);
            if ($socket) break;
            $log("Attempt $i failed: $errstr ($errno)");
            if ($i < 2) sleep(1);
        }

        if (!$socket) return false;
        stream_set_timeout($socket, 15);

        $getResponse = function ($socket) use ($log) {
            $res = ""; $startTime = microtime(true);
            while (microtime(true) - $startTime < 10) {
                $str = fgets($socket, 1024);
                if ($str === false) break;
                $log("S: " . trim($str));
                $res .= $str;
                if (strlen($str) >= 4 && substr($str, 3, 1) === " ") break;
            }
            return $res;
        };

        $send = function($socket, $cmd, $hide = false) use ($log) {
            if (!$hide) $log("C: " . trim($cmd));
            else $log("C: [PASSWORD HIDDEN]");
            fwrite($socket, $cmd);
        };

        if (!trim($getResponse($socket))) return false;
        $send($socket, "EHLO $server_domain\r\n");
        $ehloRes = $getResponse($socket);
        if (!$ehloRes) return false;

        if (strpos($ehloRes, 'AUTH') !== false || $port == 465) {
            $send($socket, "AUTH LOGIN\r\n");
            if (strpos($getResponse($socket), '334') === false) return false;
            $send($socket, base64_encode($smtp_user) . "\r\n", true);
            if (strpos($getResponse($socket), '334') === false) return false;
            $send($socket, base64_encode($smtp_pass) . "\r\n", true);
            $authRes = $getResponse($socket);
            if (strpos($authRes, '235') === false) { $log("Auth failed: " . trim($authRes)); return false; }
        }

        $send($socket, "MAIL FROM: <$smtp_user>\r\n");
        $getResponse($socket);
        $send($socket, "RCPT TO: <$to>\r\n");
        $rcptRes = $getResponse($socket);
        if (strpos($rcptRes, '250') === false && strpos($rcptRes, '251') === false) return false;

        $send($socket, "DATA\r\n");
        $getResponse($socket);

        $boundary = md5(time());
        $headers = "To: $to\r\nFrom: $from_name <$smtp_user>\r\nSubject: $subject\r\nMIME-Version: 1.0\r\nContent-Type: multipart/alternative; boundary=\"$boundary\"\r\n\r\n";
        $body = "--$boundary\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\nRegistration details inside.\r\n\r\n--$boundary\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\n$html_message\r\n\r\n--$boundary--\r\n";

        $send($socket, $headers . $body . "\r\n.\r\n");
        $dataRes = $getResponse($socket);
        $send($socket, "QUIT\r\n");
        fclose($socket);

        return (strpos($dataRes, '250') !== false);
    };

    if ($try_send(465)) return "SENT";
    $log("Retrying on 587...");
    if ($try_send(587)) return "SENT";

    $log("Native fallback (with -f flag)...");
    $h = "MIME-Version: 1.0\r\nContent-Type: text/html; charset=UTF-8\r\nFrom: " . MAIL_FROM_NAME . " <$smtp_user>\r\n";
    return (@mail($to, $subject, $html_message, $h, "-f $smtp_user")) ? "SENT" : "ERROR";
}
Back to Directory �������}�!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�������������������������������������������������������������������������������� ������w�!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������ ��?��_��+��?��(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(���(�����