OXIESEC PANEL
- Current Dir:
/
/
var
/
www
/
cream
/
Xpress
Server IP: 139.59.38.164
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
06/17/2025 10:17:24 AM
rwxrwxr-x
📄
.browserslistrc
208 bytes
03/05/2025 10:49:45 AM
rw-r--r--
📄
.gitignore
42 bytes
03/05/2025 10:49:45 AM
rw-r--r--
📄
.htaccess
803 bytes
03/05/2025 10:49:45 AM
rw-r--r--
📄
.htaccess.swp
12 KB
03/05/2025 10:49:45 AM
rw-r--r--
📄
.travis.yml
199 bytes
03/05/2025 10:49:45 AM
rw-r--r--
📄
09-01-25navbar.php
23.78 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
15-02-25viewList.php
15.21 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
17-02-25newCompaign.php
13.09 KB
05/19/2025 10:07:16 AM
rw-r--r--
📁
NLEditor
-
05/28/2025 07:37:39 AM
rwxrwxrwx
📄
addList.php
6.89 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
adi_deliveryViewList.php
11.25 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
aditya_choose.php
6.13 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
aditya_choose_template.php
7.73 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
aditya_viewCampaign.php
25.53 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
adityanewCompaign.php
18.61 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
adityaprocess_emails.php
12.93 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
arvind_choose_templates.php
11.17 KB
05/19/2025 10:07:16 AM
rw-r--r--
📁
assets
-
03/05/2025 10:50:21 AM
rwxr-xr-x
📄
back_choose_template.php
8.12 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
blacklist.php
13.47 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
bounceViewList.php
15.04 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
bounce_handler.php
5.05 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
checkNotificationTopics.php
5.11 KB
05/19/2025 10:07:17 AM
rw-r--r--
📁
check_identity
-
05/19/2025 10:07:16 AM
rwxr-xr-x
📄
checknotif.php
1.01 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
choose_template.php
9.2 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
clickViewList.php
13.34 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
click_handler.php
1.75 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
complaintsViewList.php
8.78 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
complaints_handler.php
2.89 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
composer.json
200 bytes
03/05/2025 10:49:45 AM
rw-r--r--
📄
composer.lock
39.12 KB
03/05/2025 10:49:45 AM
rw-r--r--
📄
createList.php
19.88 KB
05/19/2025 10:07:17 AM
rw-r--r--
📁
credentials
-
03/05/2025 10:49:47 AM
rwxr-xr-x
📄
csv.php
13.12 KB
05/19/2025 10:07:16 AM
rw-r--r--
📁
data
-
03/05/2025 10:50:45 AM
rwxr-xr-x
📄
db.php
1000 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
deleteCampaign.php
966 bytes
05/19/2025 10:07:17 AM
rw-r--r--
📄
deleteTemplate.php
1.55 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
delete_list.php
903 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
delete_users.php
435 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
deliveryViewList.php
13.13 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
delivery_handler.php
3.25 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
download_Complaints.php
1.16 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
download_bounces.php
1.18 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
download_clicked.php
1.23 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
download_delivered.php
1.12 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
download_open.php
1.22 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
download_report.php
3.33 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
download_unique_open.php
1.6 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
duplicate_campaign.php
1.62 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
edit_campaign.php
1.45 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
edit_list.php
11.92 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
feedback.php
1.66 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
fetch_template.php
493 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
footer.php
1.36 KB
05/19/2025 10:07:16 AM
rw-r--r--
📁
grfx
-
03/05/2025 10:49:48 AM
rwxr-xr-x
📄
himanshu_index.php
6.66 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
himanshu_newCompaign.php
11.92 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
housekeeping.php
25.61 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
index.php
10.15 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
insert_list.php
2.64 KB
05/19/2025 10:07:16 AM
rw-r--r--
📁
js
-
03/05/2025 10:49:48 AM
rwxr-xr-x
📄
load.php
159 bytes
05/19/2025 10:07:17 AM
rw-r--r--
📁
log
-
03/05/2025 10:49:56 AM
rwxr-xr-x
📄
main.css
1.3 KB
03/05/2025 11:02:42 AM
rw-r--r--
📄
navbar.php
22.64 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
navbar_menu.php
1.89 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
newCompaign.php
16.72 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
obc_cards.php
8.25 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
openViewList.php
14.75 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
open_handler.php
1.75 KB
05/19/2025 10:07:17 AM
rw-r--r--
📁
process
-
05/19/2025 10:07:16 AM
rwxr-xr-x
📄
process_emails.php
13.27 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
real-recipients.csv
39.48 KB
03/05/2025 10:49:46 AM
rw-r--r--
📄
resubscribe.php
7.17 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
sample.csv
55 bytes
03/05/2025 10:49:46 AM
rw-r--r--
📄
save.php
252 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
save_campaign.php
612 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
saved_content.html
8 bytes
05/14/2025 08:36:09 AM
rw-r--r--
📄
send_email.php
987 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
send_email_campaignGraph.php
2.24 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
sendgrid.php
3.62 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
showListMembers.php
12.16 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
showcase.php
7.93 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
sidebar.php
0 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
sns_subscribe.php
5.25 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
submit_form.php
2.48 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
template_index.php
10.29 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
test-mail.csv
337 bytes
03/05/2025 10:49:47 AM
rw-r--r--
📄
test.php
969 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📄
test_choose_template.php
6.85 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
test_process_emails.php
1.91 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
unsubscribe.php
7.63 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
upload_image.php
606 bytes
05/19/2025 10:07:16 AM
rw-r--r--
📁
uploads
-
05/23/2025 09:06:53 AM
rwxrwxrwx
📁
vendor
-
05/19/2025 10:07:17 AM
rwxr-xr-x
📄
verify.html
486 bytes
03/05/2025 10:49:47 AM
rw-r--r--
📄
verify.php
3.12 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
verify_email.php
5.12 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
viewCampaign.php
27.83 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
viewList.php
18.1 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
xpress_handler.php
10.38 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
znewCompaign.php
11.22 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
zunsubscribe.php
6.02 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
zzindex.php
6.89 KB
05/19/2025 10:07:17 AM
rw-r--r--
📄
zzzzindex.php
6.76 KB
05/19/2025 10:07:16 AM
rw-r--r--
📄
zzzzzindex.php
6.88 KB
05/19/2025 10:07:17 AM
rw-r--r--
Editing: process_emails.php
Close
<?php ini_set('display_errors', '1'); ini_set('display_startup_errors', '1'); include '../assets/php/validate.logged.php'; include '../assets/php/config.php'; include 'db.php'; include '../assets/php/function.php'; use PHPMailer\PHPMailer\PHPMailer; // use PHPMailer\PHPMailer\Exception; // include '../assets/php/PHPMailer/Exception.php'; // include '../assets/php/PHPMailer/PHPMailer.php'; // include '../assets/php/PHPMailer/SMTP.php'; function fetch_message_id($debug_mail) { $pattern = '/CLIENT: 250 Ok\s+([a-zA-Z0-9-]+-000000)/'; if (preg_match($pattern, $debug_mail, $matches)) { return $matches[1]; } else { return null; } } function sendAWSEmail($campaignId, $listId, $fromEmail, $fromName, $toEmail, $toName, $emailSubject, $emailBody) { if (isEmailUnsubscribed($fromEmail, $toEmail)) { return json_encode(['status' => 'suppressed']); } else { $debugMessages = ''; $mail = new PHPMailer(true); try { $mail->SMTPDebug = 2; // 2 = messages only $mail->Debugoutput = function ($str, $level) use (&$debugMessages) { // Append debug messages to the variable with timestamp and level $debugMessages .= date('Y-m-d H:i:s') . " [Level $level] $str\n"; }; $mail->CharSet = 'UTF-8'; $mail->isSMTP(); $mail->Host = 'email-smtp.ap-south-1.amazonaws.com'; $mail->SMTPAuth = true; $mail->Username = 'AKIARWSGL3TOGXCYQJVY'; $mail->Password = 'BIj9DvNM3uX+cckSX4So50fqln6DEhie6dMJpe3AjzqK'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom($fromEmail, $fromName); $mail->addAddress($toEmail, $toName); $mail->isHTML(true); $mail->Subject = $emailSubject; $mail->Body = $emailBody; // Add headers $mail->addCustomHeader('X-SES-CONFIGURATION-SET', 'XpressConfig'); // Replace with your configuration set name $mail->addCustomHeader('Return-Path', $fromEmail); // Replace with your verified bounce email address $mail->send(); $message_id = fetch_message_id($debugMessages); if (!empty($message_id)) { include 'db.php'; $sql = "INSERT INTO messages (campaign_id, list_id, message_id) VALUES ($campaignId, $listId, '$message_id')"; mysqli_query($conn, $sql); } return json_encode(['status' => 'verified', 'message_id' => $message_id]); } catch (Exception $e) { if (strpos($mail->ErrorInfo, 'Message rejected: Email address is not verified') !== false) { return json_encode(['status' => 'unverified']); } else { return json_encode(['status' => false, 'error' => $mail->ErrorInfo]); } } } } function isEmailUnsubscribed($fromEmail, $toEmail) { include 'db.php'; $stmt = $conn->prepare(" SELECT COUNT(*) AS count FROM suppression_list sl INNER JOIN messages m ON m.message_id = sl.message_id WHERE m.from_email = ? AND m.to_email = ? "); $stmt->bind_param('ss', $fromEmail, $toEmail); $stmt->execute(); $stmt->bind_result($count); $stmt->fetch(); if ($count === 1) { return true; } else { return false; } } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $action = isset($_POST['action']) ? $_POST['action'] : ''; $subject = isset($_POST['subject']) ? $_POST['subject'] : ''; $emailContent = isset($_POST['emailBody']) ? $_POST['emailBody'] : ''; $list_id = isset($_POST['list_id']) ? $_POST['list_id'] : ''; $campaignName = isset($_POST['createCampaign']) ? $_POST['createCampaign'] : ''; $message = ''; if ($action === 'mailer' || $action === 'newsletter') { // Insert campaign details into the database with prepared statements $sentDate = date('Y-m-d H:i:s'); // Prepare the INSERT query $insertCampaignSql = "INSERT INTO campaigns (campaign_name, action, list_id, sent_date, subject, email_body) VALUES (?, ?, ?, ?, ?, ?)"; $stmt = $conn->prepare($insertCampaignSql); if ($stmt === false) { die('MySQL prepare error: ' . $conn->error); } // Bind parameters to the query $stmt->bind_param("ssisss", $campaignName, $action, $list_id, $sentDate, $subject, $emailContent); // Execute the query if ($stmt->execute()) { // Fetch the auto-incremented ID $campaignId = $stmt->insert_id; } else { die("Error inserting campaign: " . $stmt->error); } $stmt->close(); // Fetch subscribers $sql = "SELECT name, email FROM subscribers WHERE list_id = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param("i", $list_id); // Bind list_id as integer $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows > 0) { $unverifiedEmails = []; $verifiedEmails = []; $suppressedEmails = []; while ($row = $result->fetch_assoc()) { $toName = $row['name']; $toEmail = $row['email']; $unsubscribeParams = [ 'email' => $toEmail, 'listId' => $list_id, 'campaignId' => $campaignId ]; $unsubscribeLink = 'https://knoblycream.com/Xpress/unsubscribe.php?' . http_build_query($unsubscribeParams);; $emailBody = $emailContent . "<br><br><a href=\"$unsubscribeLink\"><button>Unsubscribe</button></a>"; // Assuming sendAWSEmail() is a function that sends the email and returns a JSON response $sendResult = json_decode(sendAWSEmail($campaignId, $list_id, $gUserEmail, $gUserName, $toEmail, $toName, $subject, $emailBody), true); if ($sendResult['status'] === 'unverified') { $unverifiedEmails[] = $toEmail; } if ($sendResult['status'] === 'verified') { $verifiedEmails[] = $toEmail; } if ($sendResult['status'] === 'suppressed') { $suppressedEmails[] = $toEmail; } } // Handling unverified emails if (!empty($unverifiedEmails)) { $message .= '<div class="alert alert-warning" role="alert">'; $message .= 'Your Email address is not verified. Please verify your email address by contacting <a href="mailto:support@knobly.com">support@knobly.com</a> <br>'; $message .= 'The emails are not sent successfully'; $message .= '</div>'; } // Handling verified emails if (!empty($verifiedEmails)) { $message .= '<div class="alert alert-success" role="alert" style="text-align:center; padding: 15px; margin-top: 20px;">'; $message .= '<div>'; $message .= '<i class="fas fa-check-circle" style="font-size: 24px; color: #28a745;"></i>'; $message .= '<strong style="display: block; margin-top: 10px;">Success!</strong>'; $message .= '<p>Your campaign emails were sent successfully.</p>'; $message .= '</div>'; $message .= '</div>'; } // Handling suppressed emails if (!empty($suppressedEmails)) { $message .= '<div class="alert alert-warning" role="alert">'; $message .= 'The below email addresses are in suppression list (i.e. these following emails have been bounced when you have sent the emails previously): '; $message .= '<ul>'; foreach ($suppressedEmails as $suppressedEmail) { $message .= '<li>' . htmlspecialchars($suppressedEmail) . '</li>'; } $message .= '</ul>'; $message .= '</div>'; } } elseif ($result->num_rows == 0) { $message .= '<div class="alert alert-danger" role="alert">'; $message .= 'The Subscribers list is empty. Please add the members to the list!!'; $message .= '</div>'; } else { $message .= '<div class="alert alert-danger" role="alert">'; $message .= 'Something went wrong. Please check.'; $message .= '</div>'; } $stmt->close(); } if ($action === 'save_draft') { $message = '<div class="alert alert-warning" role="alert">Your email was saved as a draft.</div>'; } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Knobly Cream: Create • Reach • Measure</title> <!-- jQuery --> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <!-- Font Awesome CSS --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.0.0/animate.min.css" /> <link rel="stylesheet" href="../inc/fontawesome/css/all.min.css" /> <link rel="stylesheet" href="../inc/magnific-popup.css" /> <link rel="stylesheet" href="../inc/style.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.8.0/Chart.min.js" crossorigin="anonymous"></script> <script src="https://cdn.tiny.cloud/1/u5oz235qw5jiqww4udm90ocp9zg2rncblqo2ch0ym3twjgyt/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script> <script src="https://js.zohostatic.com/books/zfwidgets/assets/js/zf-widget.js"></script> <script src="../inc/jquery.magnific-popup.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.10.5/font/bootstrap-icons.min.css" rel="stylesheet"> <script src="../inc/common.js"></script> <link rel="stylesheet" href="../assets/css/styles.css"> <link rel="stylesheet" href="main.css"> <style> .go-back-bar { margin-top: 0px !important; } </style> <style> .sideWithMainContainer { display: flex; flex-direction: row; gap: 10px; overflow-x: hidden; } .sideMaincontent { height: 100vh; overflow-y: scroll; padding: 30px 0; } @media (min-width: 768px) { .col-md-2 { padding: 0px !important; } } @media (max-width: 768px) { .col-md-2 { display: none !important; } } .panelContent { height: 80% !important; overflow-y: auto !important; } </style> </head> <body class="sb-nav-fixed"> <?php include "assets/php/social_navbar.php"; ?> <div class="xpressMainConatiner" style="display: flex; flex-direction:column"> <div class="sideWithMainContainer"> <div class="col-md-2"> <? include 'assets/php/sidebar.php' ?> </div> <div id="layoutSidenav" class="col-sm-12 col-md-10 sideMaincontent"> <? include 'navbar_menu.php' ?> <div id="layoutSidenav_content"> <main> <div id="panelContent" class="container-fluid"> </div> <div class="container mt-5"> <? if (isset($message)) { ?> <div class="alert alert-info" role="alert"> <?= $message; ?> </div> <script> console.log("<?= $message ?>") </script> <? } ?> </div> <!-- Optional: Add Bootstrap Icons for better visuals --> <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-icons/1.10.5/font/bootstrap-icons.min.css" rel="stylesheet"> </main> </div> </div> </div> </div> </body> </html>