Здравствуйте!
Подскажите, пожалуйста, возможно ли с помощью Thunderbird (3.1.2, IMAP) решить такую задачу: Пользователь вручную сортирует письма - перетаскивает их из папки "Входящие" в нужные тематические папки. Так вот необходимо, чтобы на каждое вновь появившееся письмо в целевой папке запускалось бы некое действие с этим письмом (расссылалось бы уведомление определенному списку адресатов, вложение сохранялось бы в определенную сетевую папку, после этого вложение удалялось бы из тела письма). Как выполнить действия - понятно, расширений для этого полно, а вот как заставить Thunderbird реагировать на появление письма где-либо, кроме "Входящих" - не могу понять.
Заранее спасибо!
Отсутствует
Думаю, в первом приближении как-то так:
var folderListener = { OnItemAdded: function(parent, item) { alert('Письмо от ' + item.QueryInterface(Components.interfaces.nsIMsgDBHdr).mime2DecodedAuthor + ' добавлено в папку ' + parent.prettiestName); } } var mailSession = Components .classes["@mozilla.org/messenger/services/session;1"] .getService(Components.interfaces.nsIMsgMailSession); mailSession.AddFolderListener(folderListener, 1);
Отредактировано luitzen (02-09-2010 14:50:15)
Отсутствует
Думаю, в первом приближении как-то так:
Выделить кодКод:
var folderListener = { OnItemAdded: function(parent, item) { alert('Письмо от ' + item.QueryInterface(Components.interfaces.nsIMsgDBHdr).mime2DecodedAuthor + ' добавлено в папку ' + parent.prettiestName); } } var mailSession = Components .classes["@mozilla.org/messenger/services/session;1"] .getService(Components.interfaces.nsIMsgMailSession); mailSession.AddFolderListener(folderListener, 1);
Спасибо за пример, но я не программист и код на JS не разрабатывал, тем более для TB. Подскажите, пожалуйста, как применять данный код?
Ещё раз спасибо.
Отсутствует
Как выполнить действия - понятно, расширений для этого полно, а вот как заставить Thunderbird реагировать на появление письма где-либо, кроме "Входящих" - не могу понять.
Видимо, это надо расширения заставлять как-то реагировать.
Спасибо за пример, но я не программист и код на JS не разрабатывал, тем более для TB. Подскажите, пожалуйста, как применять данный код?
Слово «триггер» ввело меня в заблуждение. Думал, что вы хотите из вашего кода вызывать методы, предоставляемые расширениями. А по-другому мой код никак не применим, извините .
Отсутствует
Я правильно понимаю, что нужно писать расширение, переопределяющее обработчик событий в папках, дочерних по отношению к Inbox?
Расширение можно не писать, есть готовые расширения, позволяющие скармливать Thunderbird произвольный javascript-код.
Переопределение listener’а мне не кажется хорошей идеей, лучше добавить свой.
Повесить listener’ы на каждую папку возможно, но у меня не получилось, Thunderbird крашился при наступлении соответствующих событий. В моём коде listener вешался как бы на все папки разом, а потом устанавливалось, в какой папке событие произошло.
Как расширения, которые вы хотите натравливать на перетаскиваемые письма, определяют, что нужно обработать входящее письмо (соответственно, как имитировать выполнение этого условия применительно к перетаскиваемому письму), я понятия не имею ввиду чрезмерной общности вопроса .
Отредактировано luitzen (07-09-2010 14:37:44)
Отсутствует