Добавить в корзинуПозвонить
Найти в Дзене
IT173.ru

Cкрипт для поиска больших писем (во всех папках) (>100 МБ) Thunderbird 102+

(async function() { // Современный способ загрузки MailServices const { MailServices } = ChromeUtils.importESModule("resource:///modules/MailServices.sys.mjs"); const accountManager = MailServices.accounts; const minSizeMB = 100; // Ищем письма >100 МБ const bigMessages = []; // Перебираем все учётные записи for (const account of accountManager.accounts) { const rootFolder = account.incomingServer.rootFolder; // Рекурсивно проверяем все подпапки for (const folder of [rootFolder, ...rootFolder.descendants]) { try { const db = folder.msgDatabase; if (!db) continue; // Получаем все сообщения в папке const messages = db.enumerateMessages(); while (messages.hasMoreElements()) { const msg = messages.getNext().QueryInterface(Ci.nsIMsgDBHdr); const sizeMB = msg.messageSize / (1024 * 1024); // Байты → МБ if (sizeMB > minSizeMB) { bigMessages.push({ account: account.key, folder: folder.prettyName, subject: msg.mime2DecodedSubject || "(без темы)", date: new Date(msg.date / 1000).toLocaleString(),

(async function() {

// Современный способ загрузки MailServices

const { MailServices } = ChromeUtils.importESModule("resource:///modules/MailServices.sys.mjs");

const accountManager = MailServices.accounts;

const minSizeMB = 100; // Ищем письма >100 МБ

const bigMessages = [];

// Перебираем все учётные записи

for (const account of accountManager.accounts) {

const rootFolder = account.incomingServer.rootFolder;

// Рекурсивно проверяем все подпапки

for (const folder of [rootFolder, ...rootFolder.descendants]) {

try {

const db = folder.msgDatabase;

if (!db) continue;

// Получаем все сообщения в папке

const messages = db.enumerateMessages();

while (messages.hasMoreElements()) {

const msg = messages.getNext().QueryInterface(Ci.nsIMsgDBHdr);

const sizeMB = msg.messageSize / (1024 * 1024); // Байты → МБ

if (sizeMB > minSizeMB) {

bigMessages.push({

account: account.key,

folder: folder.prettyName,

subject: msg.mime2DecodedSubject || "(без темы)",

date: new Date(msg.date / 1000).toLocaleString(),

sizeMB: sizeMB.toFixed(2) + " MB",

});

}

}

} catch (e) {

console.error(`Ошибка в папке ${folder.prettyName}:`, e);

}

}

}

// Вывод результатов

if (bigMessages.length > 0) {

console.table(bigMessages);

console.log(`Найдено больших писем (>${minSizeMB} MB): ${bigMessages.length}`);

} else {

console.log(`Писем >${minSizeMB} MB не найдено.`);

}