false, 'message' => 'Neznana napaka. Prosimo, kontaktirajte administratorja.']; // 1. KORAK: Preverimo, ali je bila zahteva poslana z metodo POST. // S tem preprečimo, da bi kdo do skripte dostopal neposredno preko URL-ja. if ($_SERVER['REQUEST_METHOD'] !== 'POST') { $response['message'] = 'Nedovoljen dostop.'; echo json_encode($response); exit; } // 2. KORAK: Preberemo JSON podatke, ki jih je poslal JavaScript (fetch). // Standardna PHP spremenljivka $_POST ne deluje za JSON vsebino. $json_data = file_get_contents('php://input'); $data = json_decode($json_data, true); // Preverimo, če so podatki pravilno dekodirani in če vsebujejo vse potrebne ključe. if (!$data || !isset($data['name']) || !isset($data['email']) || !isset($data['message'])) { $response['message'] = 'Manjkajoči podatki. Prosimo, izpolnite vsa polja.'; echo json_encode($response); exit; } // 3. KORAK: Očistimo in validiramo prejete podatke. $name = trim($data['name']); $email = trim($data['email']); $message = trim($data['message']); if (empty($name)) { $response['message'] = 'Prosimo, vnesite vaše ime in priimek.'; echo json_encode($response); exit; } if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $response['message'] = 'Prosimo, vnesite veljaven e-poštni naslov.'; echo json_encode($response); exit; } if (empty($message)) { $response['message'] = 'Prosimo, vnesite vaše sporočilo.'; echo json_encode($response); exit; } // 4. KORAK: Ustvarimo novo instanco PHPMailer. // `true` v konstruktorju omogoči izjeme (exceptions), kar je boljši način za obravnavo napak. $mail = new PHPMailer(true); try { // === Nastavitve strežnika (uporabimo konstante iz config.php) === // Za razhroščevanje - prikaže podroben izpis dogajanja. V produkciji nastavite na SMTP::DEBUG_OFF. // $mail->SMTPDebug = SMTP::DEBUG_SERVER; $mail->isSMTP(); $mail->Host = SMTP_HOST; $mail->SMTPAuth = true; $mail->Username = SMTP_USERNAME; $mail->Password = SMTP_PASSWORD; $mail->SMTPSecure = SMTP_SECURE; $mail->Port = SMTP_PORT; // Nastavimo kodiranje znakov na UTF-8 za pravilno podporo šumnikom. $mail->CharSet = 'UTF-8'; // === Prejemniki === // Pošiljatelj - to mora biti naslov, s katerim se prijavljate (info@herminamerc.si). // Ime pošiljatelja pa je ime, ki ga je vpisala oseba v obrazec. $mail->setFrom(SMTP_USERNAME, $name); // Prejemnik - to ste vi (lastnik spletne strani). $mail->addAddress(SMTP_USERNAME, 'Hermina Merc - Spletna Stran'); // Naslov za odgovor (Reply-To) - KLJUČEN DEL! // To nastavimo na e-mail osebe, ki je izpolnila obrazec. // Ko boste v vašem e-mail klientu kliknili "Odgovori", boste odgovorili neposredno tej osebi. $mail->addReplyTo($email, $name); // === Vsebina e-sporočila === $mail->isHTML(false); // Pošljemo kot navadno besedilo, ne HTML. $mail->Subject = 'Novo sporočilo s spletne strani herminamerc.si'; // Sestavimo telo sporočila. $mail->Body = "Prejeli ste novo sporočilo preko kontaktnega obrazca.\n\n" . "==================================================\n" . "Ime in priimek: " . $name . "\n" . "E-mail naslov: " . $email . "\n" . "==================================================\n\n" . "Sporočilo:\n" . "--------------------------------------------------\n" . $message . "\n" . "--------------------------------------------------\n"; // 5. KORAK: Pošljemo e-sporočilo. $mail->send(); // Če je pošiljanje uspelo, pripravimo uspešen odgovor. $response['success'] = true; $response['message'] = 'Hvala za vaše sporočilo! Odgovorili vam bomo v najkrajšem možnem času.'; } catch (Exception $e) { // Če je prišlo do napake med pošiljanjem, jo ujamemo. $response['success'] = false; $response['message'] = 'Sporočila ni bilo mogoče poslati. Prosimo, poskusite znova kasneje.'; // Za razhroščevanje: zabeležimo dejansko napako v strežniški log (ne prikažemo je uporabniku). // Na strežniku omogočite pisanje v error log. error_log("PHPMailer napaka: " . $mail->ErrorInfo); } // 6. KORAK: Pošljemo JSON odgovor nazaj JavaScriptu. echo json_encode($response); ?>