Полезная информация

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!
  • Форумы
  •  » Thunderbird
  •  » Как создать папку с «безЯрлычными» письмами»?

№105-09-2010 06:13:28

uzi1
Участник
 
Группа: Members
Зарегистрирован: 15-11-2009
Сообщений: 6
UA: Firefox 3.6

Как создать папку с «безЯрлычными» письмами»?

На Gmail есть несколько ярлыков, которые соответственно появились в ТБ.
Как добиться того чтоб в ТБ была папка в которой были бы видны только «безЯрлычные» письма?

Отсутствует

 

№208-09-2010 12:54:01

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 4.0

Re: Как создать папку с «безЯрлычными» письмами»?

Вопрос очень хороший :). Я придумал решение (довольно варварское), но столкнулся с проблемами при реализации.

Идея решения такая. Нужно установить Filtaquilla (вообще полезная вещь) и в её настройках задать возможность использовать собственный JavaScript при поиске. Затем создать виртуальную папку, отображающую такие сообщения из «All Mail», для которых в папках ярлыков нет сообщений с идентичным Message-ID.

В первом приближении код выглядит так:

Выделить код

Код:

let messageID = message.messageId;

let subfolders = Cc["@mozilla.org/supports-array;1"]
            .createInstance(Ci.nsISupportsArray);

Cc["@mozilla.org/messenger/account-manager;1"]  
            .getService(Ci.nsIMsgAccountManager)
            .FindServer('mylogin@gmail.com', 'imap.googlemail.com', 'imap')
            .rootFolder
            .ListDescendents(subfolders);
(
    (
    function()
    {
    for each (let subfolder in fixIterator(subfolders, Ci.nsIMsgFolder))
        {
        if (!subfolder.getFlag(0x40405720))
            {
            let messages = subfolder.messages;
            while(messages.hasMoreElements())
                {
                    let _message = messages.getNext();
                    if (_message.messageId == messageID) {return false;} 
                }
            }
        }
    return true;
    }
    )()
)

Проблема в том, что _message.messageId чаще всего undefined. Не всегда, конечно. Если письмо с ярлыком было только что просмотрено, то соответствующий nsiMsgDBHdr всё-таки имеет правильный messageId.

Значение mailnews.customDBHeaders установлено в message-id, папки переиндексированы. Что ему ещё нужно, кто знает?

Отредактировано luitzen (14-09-2010 13:11:50)

Отсутствует

 

№308-09-2010 17:41:34

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 4.0

Re: Как создать папку с «безЯрлычными» письмами»?

luitzen пишет

Что ему ещё нужно, кто знает?

А не хватает ему сказанного в нужном месте следующего:

Выделить код

Код:

_message.QueryInterface(Components.interfaces.nsIMsgDBHdr);

uzi1, считаю вопрос решённым, если нужно что-то дополнительно разъяснить, спрашивайте.

Отсутствует

 

№408-09-2010 17:45:41

uzi1
Участник
 
Группа: Members
Зарегистрирован: 15-11-2009
Сообщений: 6
UA: Firefox 3.6

Re: Как создать папку с «безЯрлычными» письмами»?

далек я от JavaScript :sick:
какова окончательная редакция вашего труда?

Отсутствует

 

№508-09-2010 19:23:50

luitzen
Участник
 
Группа: Members
Зарегистрирован: 19-07-2008
Сообщений: 791
UA: Firefox 4.0

Re: Как создать папку с «безЯрлычными» письмами»?

ОК, последовательность действий такая.

  1. Устанавливаете FiltaQuilla.
  2. В настройках этого дополнения на вкладке «Search Terms» выставляете флаг «JavaScript».
  3. В аbout:config находите параметр mailnews.customDBHeaders, выставляете его в "message-id" (без кавычек, в нижнем регистре). Если в значении параметра что-то есть, дописываете в него указанную строку через пробел.
  4. Наверное, нужно перезапустить Thunderbird.
  5. Переиндексируете папки с ярлыками и папку «All Mail» (я просто поудалял msf-файлы в профиле).
  6. Нажимаете Ctrl+Shift+F, выбираете папку «All Mail», в условиях поиска выбираете «JavaScript» «подходит под» <код ниже>.

    Выделить код

    Код:

    let messageID = message.messageId;
    
    let subfolders = Cc["@mozilla.org/supports-array;1"]
                .createInstance(Ci.nsISupportsArray);
    
    Cc["@mozilla.org/messenger/account-manager;1"]  
                .getService(Ci.nsIMsgAccountManager)
                .FindServer('mylogin@gmail.com', 'imap.googlemail.com', 'imap')
                .rootFolder
                .ListDescendents(subfolders);
    (
        (
        function()
        {
        for each (let subfolder in fixIterator(subfolders, Ci.nsIMsgFolder))
            {
            if (!subfolder.getFlag(0x40405720))
                {
                let messages = subfolder.messages;
                while(messages.hasMoreElements())
                    {
                        let _message = messages.getNext()
                            .QueryInterface(Ci.nsIMsgDBHdr);
                        if (_message.messageId == messageID) {return false;} 
                    }
                }
            }
        return true;
        }
        )()
    )

    В восьмой строке нужно указать свой логин. Поиск дубликатов производится во всех папках, кроме стандартных и виртуальных.

  7. Сохраняете как виртуальную папку. Выставлять флаг «Поиск онлайн» не следует.

Отредактировано luitzen (14-09-2010 13:08:17)

Отсутствует

 
  • Форумы
  •  » Thunderbird
  •  » Как создать папку с «безЯрлычными» письмами»?

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]