From 85f2e8c24496cff2a95e00e90765d60a7bbd857b Mon Sep 17 00:00:00 2001 From: johnnyq Date: Mon, 19 Aug 2024 16:24:45 -0400 Subject: [PATCH] Fix Cron Mail Ticket Parser script: It will now check if the ITFlow folder is created and subscribed before moving the mail --- cron_ticket_email_parser.php | 50 ++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/cron_ticket_email_parser.php b/cron_ticket_email_parser.php index 30d1acc0..99f0e001 100644 --- a/cron_ticket_email_parser.php +++ b/cron_ticket_email_parser.php @@ -315,6 +315,50 @@ function addReply($from_email, $date, $subject, $ticket_number, $message, $attac } } + +// Function to create a folder in the mailbox if it doesn't exist +function createMailboxFolder($client, $folderName) { + try { + // Attempt to get the folder + $folder = $client->getFolder($folderName); + + // If the folder doesn't exist, create it + if (!$folder) { + $client->createFolder($folderName); + echo "Folder '$folderName' created successfully.
"; + + // Disconnect and reconnect to ensure the server registers the new folder + $client->disconnect(); + sleep(1); // Pause before reconnecting + $client->connect(); + } else { + echo "Folder '$folderName' already exists.
"; + } + + // Re-fetch the folder after reconnecting + return $client->getFolder($folderName); + + } catch (Exception $e) { + echo "Error creating folder '$folderName': " . $e->getMessage() . "
"; + return null; + } +} + +// Function to subscribe to a folder in the mailbox +function subscribeMailboxFolder($client, $folder) { + if ($folder) { + try { + // Subscribe to the folder + $folder->subscribe(); + echo "Folder '{$folder->name}' subscribed successfully.
"; + } catch (Exception $e) { + echo "Error subscribing to folder '{$folder->name}': " . $e->getMessage() . "
"; + } + } else { + echo "Cannot subscribe to folder because it does not exist.
"; + } +} + // Initialize the client manager and create the client $clientManager = new ClientManager(); $client = $clientManager->make([ @@ -330,6 +374,12 @@ $client = $clientManager->make([ // Connect to the IMAP server $client->connect(); +// Create the "ITFlow" mailbox folder if it doesn't exist +$folder = createMailboxFolder($client, 'ITFlow'); + +// Subscribe to the "ITFlow" mailbox folder +subscribeMailboxFolder($client, $folder); + // Possible names for the inbox folder $inboxNames = ['Inbox', 'INBOX', 'inbox'];