Керування файлами cookie, які використовуються для реклами, таких як персоналізація реклами, ремаркетинг і аналіз ефективності реклами.
2.8.1.7. Видалення старих листів з поштової скриньки
Увага!
- Цей скрипт є потужним інструментом для керування поштовими скриньками і має використовуватися з обережністю.
- При великому обсязі поштової скриньки скрипт може не встигнути видалити листи за один прохід і може знадобитися повторний запуск.
Для роботи скрипта потрібна версія PHP 8.3 або нижча.
Скрипт видалення листів за певний проміжок часу:
<?php
if (php_sapi_name() !== 'cli') {
die("Access Denied: This script can only be run from the command line.\n");
}
$options = getopt('', [
'hostname::',
'port::',
'ssl::',
'username:',
'password:',
'folders::',
'from-date::',
'to-date:',
]);
$hostname = isset($options['hostname']) ? $options['hostname'] : 'mail.adm.tools';
$port = isset($options['port']) ? $options['port'] : 143;
$username = $options['username'] ?? die("Error: 'username' parameter is required.\n");
$password = $options['password'] ?? die("Error: 'password' parameter is required.\n");
$ssl = isset($options['ssl']) ? $options['ssl'] : (($port == 993) ? 'y' : 'n');
$folders = isset($options['folders']) ? explode(',', $options['folders']) : ['INBOX'];
$fromDate = isset($options['from-date']) ? $options['from-date'] : '1-Jan-1970';
if (!isset($options['to-date'])) {
die("Error: 'to-date' parameter is required.\n");
}
$toDate = $options['to-date'];
$connectionString = '{' . $hostname . ':' . $port . (($ssl == 'y') ? '/imap/ssl' : '/imap') . '}';
echo "Connecting to server: $connectionString\n";
echo "Searching emails in folders: " . implode(', ', $folders) . "\n";
foreach ($folders as $folder) {
$fullFolderName = (stripos($folder, 'INBOX') === 0) ? $folder : 'INBOX.' . $folder;
$imapStream = imap_open($connectionString . $fullFolderName, $username, $password);
if (!$imapStream) {
echo "Error: Could not open folder $fullFolderName\n";
continue;
}
$searchCriteria = 'SINCE "' . $fromDate . '" BEFORE "' . $toDate . '"';
$emails = imap_search($imapStream, $searchCriteria);
if ($emails) {
echo "Found " . count($emails) . " emails in folder $fullFolderName\n";
foreach ($emails as $emailNumber) {
$deleteStatus = imap_delete($imapStream, $emailNumber);
if ($deleteStatus) {
echo "Successfully deleted email with ID $emailNumber in folder $fullFolderName\n";
} else {
echo "Error deleting email with ID $emailNumber in folder $fullFolderName\n";
}
}
imap_expunge($imapStream);
} else {
echo "No emails found in folder $fullFolderName matching criteria\n";
}
imap_close($imapStream);
}
echo "Done.\n";
Аргументи командного рядка при запуску скрипта:
hostname— адреса IMAP-сервера (за замовчуваннямmail.adm.tools).port— порт сервера (за замовчуванням143).ssl— примусове використання SSL (y— використовувати,n— не використовувати).username(обов'язковий параметр) — адреса поштової скриньки.password(обов'язковий параметр) — пароль поштової скриньки.folders— папки для пошуку та видалення листів (за замовчуванням папка вхіднихINBOX).from-date— з якої дати видаляти листи у форматіДень-Місяць-Рік(за замовчуванням1-Jan-1970).to-date(обов'язковий параметр) — по яку дату видаляти листи у форматіДень-Місяць-Рік.
Приклад команди запуску скрипта в консолі або cron:
/usr/local/bin/php /home/example/file.php --hostname="mail.example.com" --port=993 --ssl=y --username="your-email@example.com" --password="your-email-password" --folders="INBOX,Sent" --from-date="1-Jan-2025" --to-date="1-Jan-2025"
(1)