make(Illuminate\Contracts\Console\Kernel::class); $kernel->bootstrap(); set_time_limit(0); $newTimezone = 'Europe/London'; date_default_timezone_set($newTimezone); $imapDB = json_decode(config('app.settings.imap_settings'), true); // Mailbox credentials $hostname = '{'.$imapDB['host'].':'.$imapDB['port'].'/ssl}INBOX'; $username = $imapDB['username']; $password = $imapDB['password']; // Connect to mailbox $inbox = imap_open($hostname, $username, $password); // Check for connection errors if (! $inbox) { exit('Could not connect to mailbox: '.imap_last_error()); } // Get current time in Unix timestamp $current_time = time(); // Search for messages older than one day // $search_criteria = 'BEFORE "' . date('d-M-Y', strtotime('-3 hours', $current_time)) . '"'; // $messages = imap_search($inbox, $search_criteria); $messages = imap_search($inbox, 'ALL'); $batch_size = 10; $deleted_count = 0; // if ($messages) { // $chunks = array_chunk($messages, $batch_size); // foreach ($chunks as $chunk) { // foreach ($chunk as $message_number) { // imap_delete($inbox, $message_number); // } // imap_expunge($inbox); // $deleted_count += count($chunk); // } // echo $deleted_count . ' messages older than specified time have been deleted.'; // } else { // echo 'No messages older than specified time found in mailbox.'; // } if ($messages) { $chunks = array_chunk($messages, $batch_size); foreach ($chunks as $chunk) { foreach ($chunk as $message_number) { // Get message header to fetch internal date $header = imap_headerinfo($inbox, $message_number); $date_str = $header->date; $msg_time = strtotime($date_str); // Check if message is older than 3 hours if ($msg_time !== false && ($current_time - $msg_time) > 2 * 3600) { imap_delete($inbox, $message_number); $deleted_count++; } } imap_expunge($inbox); } echo $deleted_count.' messages older than 2 hours have been deleted.'; } else { echo 'No messages found in mailbox.'; } // Close mailbox connection imap_close($inbox);