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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№125-10-2010 20:34:15

Nakaz
Участник
 
Группа: Members
Зарегистрирован: 25-10-2010
Сообщений: 1
UA: Firefox 3.6

Идея: поиск ответа на письмо (повтор)

Был в форуме вопрос:

В Бате есть очень удобная функция - поиск ответа на письмо:
выбираешь письмо на которое уже отвечал, жмешь Ctrl+BackSpace и открывается письмо которое ты написал в ответ на выбранное.
Очень хочется поиметь что-то подобное в Тандерберде.

Много думал и придумал:
Ответ можно найти по заголовкам: "Referenses" или "In-Reply-To".
Достаточно взять идентификатор выбранного письма в заголовке "Message-ID" сделать поиск по всем папкам "Sent" или "Draft" или "unSent"  писем у которых заголовки "Referenses" или "In-Reply-To" содержат этот идентификатор.

Попробовал со стандартным поиском - работает - ищет исправно!

Идем дальше: есть установленный плагин KeyConfig, который позволяет на горячие клавиши повесить последовательности команд встроенного языка.

Теперь вопрос: какими командами можно выдрать из письма на котором установлен фокус содержимое хидера "Message-ID", и как его передать следующей команде - найти письмо, в котором, например, хидер "In-Reply-To" содержит этот идентификатор?

Был на него ответ :
"http://messageidfinder.mozdev.org"

У меня вопрос - есть ли сейчас похожий функционал в Тандерберде?

Отсутствует

 

№227-10-2010 21:28:48

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

Re: Идея: поиск ответа на письмо (повтор)

В Thunderbird есть возможность «открыть в разговоре». Это такой пункт в меню «другие действия». Если чем-то не устраивает, можно создать виртуальную папку, объединяющую несколько. Или настроить сохранение ответов в папке оригинала. Разумеется, во всех случаях нужно использовать группировку по обсуждениям.

Если же в том виде, в котором хотите вы… Message-ID текущего письма получить просто:

Выделить код

Код:

gFolderDisplay.selectedMessage.messageId

Дальше сложнее. Есть три варианта. Первый — использовать общие механизмы поиска Thunderbird. Второй — как-то паразитировать на средствах получения того способа отображения списков писем, который мы имеем в режиме «Открыть в разговоре». Третий — реализовать свой собственный поиск в надежде, что в данном конкретном случае он будет быстрее, чем универсальный поиск Thunderbird. Второго я не умею. Для третьего, видимо, придётся хранить значение «In-Reply-To» в файле с индексом папки, а переиндексировать неохота :).

Код ниже открывает сообщения, у которых в In-Reply-To стоит Message-ID текущего. Он производит поиск в тех папках учётной записи, в которой хранится сообщение, названия которых указаны в первой строке.

Выделить код

Код:

let foldersToSearch = ['Входящие', 'Отправленные'];

let Ci = Components.interfaces;
let Cc = Components.classes;

function yieldFolders()
{
   let allFolders = Cc["@mozilla.org/supports-array;1"].createInstance(Ci.nsISupportsArray);
   gFolderDisplay.displayedFolder.rootFolder.ListDescendents(allFolders);
   for (let i = 0; i < allFolders.Count(); i++)
       {
       let folder = allFolders.GetElementAt(i).QueryInterface(Ci.nsIMsgFolder);
       if (foldersToSearch.indexOf(folder.prettyName) != -1)
           yield folder;
       }
}

let searchListener =
   {
   onNewSearch: function() {},
   onSearchHit: function(dbHdr, folder) {MailUtils.displayMessage(dbHdr)},
   onSearchDone: function() {}
   };
  
let searchSession = Cc["@mozilla.org/messenger/searchSession;1"].createInstance(Ci.nsIMsgSearchSession);

let term = searchSession.createTerm();
   let value = term.value
   value.str = '<' + gFolderDisplay.selectedMessage.messageId + '>';
term.value = value;
term.attrib = Ci.nsMsgSearchAttrib.OtherHeader;
term.op = Ci.nsMsgSearchOp.Is;
term.arbitraryHeader = 'In-Reply-To';
term.booleanAnd = true;
searchSession.appendTerm(term);
   
for each (let folder in yieldFolders())
   searchSession.addScopeTerm(Ci.nsMsgSearchScope.offlineMail, folder);

searchSession.registerListener(searchListener);
searchSession.search(null);

С кастомной кнопки работает исправно.

Отсутствует

 

№328-10-2010 12:40:29

Shura
Участник
 
Группа: Members
Зарегистрирован: 06-05-2006
Сообщений: 1205
UA: Firefox 3.6
Веб-сайт

Re: Идея: поиск ответа на письмо (повтор)

Спасибо, работает просто замечательно!


FreeBSD 8.2, IceWM

Отсутствует

 

Board footer

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