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"; } }