2.8.1.6. Удаление старых писем из почтового ящика
Внимание!
При большом объёме почтового ящика скрипт может не успеть удалить письма за один проход и может потребоваться повторный запуск.Скрипт позволяет удалять письма за определенный интервал времени, который можно указать относительно текущего дня или фиксированные даты.
<?php $Before = 'BEFORE "' . $Before . '"'; $After = 'SINCE "' . $After . '"'; $mbox = imap_open("{" . $Host . "/novalidate-cert}INBOX", $User, $Password) or die("Can't connect: " . imap_last_error()); try { throw new Exception("Error is occurred"); } } foreach ($emails as $email_id) { '/([^: ]+): (.+?(?:\r\n\s(?:.+?))*)\r\n/m', $matches ); } } catch (Exception $e) { echo $e->getMessage(), "\n"; }
Необходимые для работы скрипта данные можно указать как в самом скрипте, так и в командной строке при запуске:
Host
— адрес и порт IMAP-сервера.User
— название почтового ящика.Password
— пароль почтового ящика.Before
— письма ранее указанной даты будут удалены. Указать дату можно заменив-1 year
на конкретную дату, в формате ГГГГ-ММ-ДД (2010-02-23) или отнимая от текущей даты определенное количество времени в формате-1 year
или-1 month
или-1 day
.After
— письма позже указанной даты будут удалены. Указать дату можно заменив1970-01-01
на конкретную дату, в формате ГГГГ-ММ-ДД (2010-02-22) или отнимая от текущей даты определенное количество времени в формате-1 year
или-1 month
или-1 day
.
Запуск скрипта в консоли или задаче cron выполняется командой вида:
/usr/local/bin/php /home/example/file.php mail.adm.tools:143 admin@example.com "password" "2022-03-24" "2015-04-28"