imap; $cleanPeriod = $db->getValue( "SELECT ic.cleanPeriod FROM imapMultiConfig ic JOIN util.config c ON c.environment = ic.environment"); $deleted = 0; $date = new DateTime(NULL); $date->sub(new DateInterval($cleanPeriod)); $filter = sprintf('BEFORE "%s"', $date->format('D, j M Y')); $folders = [ $this->imapConf['successFolder'] ,$this->imapConf['errorFolder'] ]; 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 mail WHERE created < #', [$date]); echo "Done\n"; } }