imap; $cleanPeriod = $db->getValue ('SELECT clean_period FROM imap_config'); $deleted = 0; $date = new DateTime (NULL); $date->sub (new DateInterval ($cleanPeriod)); $filter = sprintf ('BEFORE "%s"', $date->format('D, j M Y')); $folders = [ $this->imapConf['success_folder'] ,$this->imapConf['error_folder'] ]; foreach ($folders as $folder) if (imap_reopen ($imap, "{$this->mailbox}$folder")) { if ($messages = imap_search ($imap, $filter)) { foreach ($messages as $message) imap_delete ($imap, $message); imap_expunge ($imap); $count = count ($messages); $deleted += $count; } else $count = 0; echo "$count mails deleted from $folder mailbox\n"; } echo "Total $deleted mails deleted\n"; echo "Deleting records from database\n"; $db->query ('DELETE FROM message WHERE created < #', [$date]); echo "Done\n"; } }