Это возможный записать Ваши собственные фильтры для Thunderbird, я не забочусь о том, какой язык используется.
Я хочу смочь сделать полный анализ электронной почты (заголовки и текст) и принять определенные меры на основе содержания.
Бонусные очки, если я могу сравнить текущую электронную почту с более старыми полученными сообщениями (главным образом для удаления дублирующихся сообщений журнала)
На самом деле это выполнимо с FiltaQuilla. (Испытанный FiltaQuilla 1.1.0, с Thunderbird 3.1.9).
Ниже сценарий тестирования, подвергнутый "действию JavaScript с телом", предоставленным FiltaQuilla. Это действительно показывает все свойства заголовка и тело в ошибочной консоли.
После того как те поля данных доступны коду, он должен пересечь через папки средства рассылки и сообщения для сравнения их. Возможно, использование "threadParent" свойства на hdr может упростить логику, относиться к nsIMsgDBHdr на MDC для подсказки. В коде могут быть установлены дополнительные свойства. Например, набор "hdr.myvar = '1234'" в коде для дублированных сообщений, затем в более позднем фильтре соответствуют myvar к 1234 и делают нормальное действие для удаления их.
Так как этот сценарий является частью действия фильтра, часть условия фильтра должна соответствовать всем сообщениям интереса. В этом тесте расположен сценарий после действия для копирования сообщения в локальную папку которая может или не может быть необходимой, но он действительно загружает тело сообщения на локальную машину на учетной записи IMAP, таким образом, действие сделает, имеют тело к доступу.
//FiltaQuilla filter action script:
for (let index = 0; index < msgHdrs.length; index++)
{ //get msg hdr:
let hdr = msgHdrs.queryElementAt(index, Ci.nsIMsgDBHdr);
//show subject: get it in two ways
let s = hdr.getStringProperty("subject");
if ( s != undefined && s.length != undefined && s.length > 0)
Cu.reportError(" flt log1: " + s.length + " " + s);
Cu.reportError(" flt log2: " + hdr.subject );
//show all properties of hdr: uncomment to show.
//let e = hdr.propertyEnumerator;
//while ( e.hasMore() ) Cu.reportError(" flt log3: " + e.getNext() );
//get body: from an example on MDC: getMessageBody(aMessageHeader)
//Actions configured in the filter: Without [1], it takes long long time.
// [1] copy msg to a local folder.
// [2] "Javascript Action with Body" with this script.
{ let messenger = Components.classes["@mozilla.org/messenger;1"]
.createInstance(Components.interfaces.nsIMessenger);
let listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"]
.createInstance(Components.interfaces.nsISyncStreamListener);
let uri = hdr.folder.getUriForMsg(hdr);
messenger.messageServiceFromURI(uri)
.streamMessage(uri, listener, null, null, false, "");
let folder = hdr.folder;
let body = folder.getMsgTextFromStream(listener.inputStream,
hdr.Charset, 65536, 32768, false, true, { });
//show body:
Cu.reportError(" flt log4: " + body.length + " " + body);
}
}
Нет, это, кажется, не возможно.
Такую обработку является, вероятно, самым легким сделать на почтовом сервере, с материалом как procmail, Курьер maildrop, amavisd-новый, и т.д.
Amavisd-новый специально предназначено для передачи почты внешним программам обработки перед доставкой, обычно антивирусными и демонами против спама.
Если бы Вы не можете сделать этого на стороне сервера, необходимо было бы записать расширение, но это - вероятно, слишком много работы.
Наконец, возможно, можно удовлетворить хорошую часть потребностей с расширением FiltaQuilla, которое поддерживает регулярные выражения, запуская внешние программы и действия JavaScript. Можно найти больше информации на странице автора.
Лично, если у меня не было доступа к почтовому серверу и если FiltaQuilla не удовлетворил мои потребности, я был бы, принял решение настроить локальный Постфикс / почтовый сервер IMAP, выбирающий почту от ISP и обрабатывающий его перед доставкой с моими пользовательскими сценариями. Это должно быть намного легче, чем запись расширения ТБ. Но это может быть излишество для Ваших потребностей.
Вы могли искать прокси POP3/IMAP, который имеет scriptable возможности фильтрации, в которых Вы нуждаетесь. Это мог быть прокси, который работает на том же ПК как Thunderbird.
С расширением: http://mesquilla.com/extensions/filtaquilla/
можно создать JavaScript и/или внешние файлы для выполнения, таким образом, он похож на тело, "возможно",