автоматизируем очистку почтового ящика по-расписанию
собственно subj, на примере яндекса
я хочу удалять с сервера старые письма (старше недели) с уведомлениями, которые у меня накапливаются в отдельной папке
для начала идём в настройки безопасности https://id.yandex.ru/security
выбираем «Пароли приложений» https://id.yandex.ru/profile/apppasswords-list
и создаем новый пароль для приложения, нам требуется сгенерить пароль для доступа к Почте, указываем понятное нам название и генерим пароль
на самом деле — это очень правильно, т. к. мы не будем хранить в ком-то скрипте свой основной пароль в открытом виде
а дальше, собственно, сам скрипт
<?php
$auth_mail = 'user@yandex.ru'; // логин
$auth_pass = '$tr0ngP@$$w0rd'; // пароль
$server = '{imap.yandex.ru:993/imap/ssl}'.'INBOX'; // подключение к серверу к папке входящие
$filter_str = 'BEFORE "'.date('d-M-Y', strtotime('-7 days')).'"'; // фильтр, чтобы получить письма старше 7 дней
$imap = imap_open($server, $auth_mail, $auth_pass) or die("Не удалось подключиться: ".imap_last_error());
// подключаемся
$some = imap_search($imap, $filter_str);
// применяем фильтр
if ($some !== false) {
// если что-то нашли - в цикле обходим
foreach ($some as $msg_id)
{ // и помечаем на удаление каждое письмо с его id
echo "delete message #".$msg_id."\n";
imap_delete($imap, $msg_id);
}
}
// окончательно удаляем отмеченные письма и отключаемся
imap_expunge($imap);
imap_close($imap);
?>
обратите внимание, я в переменную «$server» добавил строку из двух частей, вторая чать в примере подключит вас к папке «Входящие», если вам надо выбрать другую папку — укажите свой путь, например:
INBOX|&BCEEPgRGBEEENQRCBDg- — это папка Входящие — Соцсети, записанная в кодировке UTF7-IMAP
список папок можно получить командой
$list = imap_list($imap, "{imap.yandex.ru}", "*");
if (is_array($list)) {
foreach ($list as $val) {
echo mb_convert_encoding($val, "UTF-8", "UTF7-IMAP")."\n";
echo $val."\n\n";
}
}
первой строкой будет выводится декодированное (читабельное) название, второй строкой исходное, которое и надо будет подставлять в свой скрипт выше