diff --git a/cron/mail_queue.php b/cron/mail_queue.php
index 5bc285df..ebedb830 100644
--- a/cron/mail_queue.php
+++ b/cron/mail_queue.php
@@ -186,10 +186,7 @@ function sendQueueEmail(
$mail->addAddress($to_email, $to_name);
$mail->isHTML(true);
$mail->Subject = $subject;
- $mail->Body = "
{$html_body}
";
+ $mail->Body = $html_body;
if (!empty($ics_str)) {
$mail->addStringAttachment($ics_str, 'Scheduled_ticket.ics', 'base64', 'text/calendar');
diff --git a/cron/ticket_email_parser.php b/cron/ticket_email_parser.php
index fc159493..cc2724a9 100644
--- a/cron/ticket_email_parser.php
+++ b/cron/ticket_email_parser.php
@@ -83,8 +83,16 @@ function addTicket($contact_id, $contact_name, $contact_email, $client_id, $date
// Clean up the message
$message = trim($message);
+ // Remove DOCTYPE and meta tags
+ $message = preg_replace('/]*>/i', '', $message);
+ $message = preg_replace('/]*>/i', '', $message);
+ // Remove , , and their closing tags
+ $message = preg_replace('/<\/?(html|head|body)[^>]*>/i', '', $message);
+ // Collapse excess whitespace
$message = preg_replace('/\s+/', ' ', $message);
+ // Convert newlines to
$message = nl2br($message);
+ // Wrap final formatted message
$message = "Email from: $contact_name <$contact_email> at $date:-
$message
";
$ticket_prefix_esc = mysqli_real_escape_string($mysqli, $config_ticket_prefix);
@@ -181,13 +189,37 @@ function addReply($from_email, $date, $subject, $ticket_number, $message, $attac
global $mysqli, $config_app_name, $company_name, $company_phone, $config_ticket_prefix, $config_base_url, $config_ticket_from_name, $config_ticket_from_email, $allowed_extensions;
$ticket_reply_type = 'Client';
- $message_parts = explode("##- Please type your reply above this line -##", $message);
- $message_body = $message_parts[0];
- $message_body = trim($message_body);
- $message_body = preg_replace('/\r\n|\r|\n/', ' ', $message_body);
- $message_body = nl2br($message_body);
+ // $message contains the raw HTML body from IMAP
- $message = "Email from: $from_email at $date:-
$message_body
";
+ // 1) Remove the reply separator and everything below it (HTML-aware)
+ // This matches: ##- Please type your reply above this line -## and EVERYTHING after it
+ $message = preg_replace(
+ '/]*>##-\s*Please\s+type\s+your\s+reply\s+above\s+this\s+line\s*-##<\/i>.*$/is',
+ '',
+ $message
+ );
+
+ // 2) Clean up the remaining message
+
+ // Remove DOCTYPE and meta tags
+ $message = preg_replace('/]*>/i', '', $message);
+ $message = preg_replace('/]*>/i', '', $message);
+
+ // Remove , , and their closing tags
+ $message = preg_replace('/<\/?(html|head|body)[^>]*>/i', '', $message);
+
+ // Trim leading/trailing whitespace
+ $message = trim($message);
+
+ // Normalize line breaks to spaces
+ $message = preg_replace('/\r\n|\r|\n/', ' ', $message);
+
+ // Convert to
for HTML display
+ $message = nl2br($message);
+
+ // 3) Final wrapper
+ $message = "Email from: $from_email at $date:-
+ $message
";
$ticket_number_esc = intval($ticket_number);
$message_esc = mysqli_real_escape_string($mysqli, $message);