Сценарий фильтры ThunderBird

Это возможный записать Ваши собственные фильтры для Thunderbird, я не забочусь о том, какой язык используется.

Я хочу смочь сделать полный анализ электронной почты (заголовки и текст) и принять определенные меры на основе содержания.

Бонусные очки, если я могу сравнить текущую электронную почту с более старыми полученными сообщениями (главным образом для удаления дублирующихся сообщений журнала)

5
задан 11.09.2014, 00:42

4 ответа

На самом деле это выполнимо с 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);
  }
}
4
ответ дан 07.12.2019, 17:02

Нет, это, кажется, не возможно.

Такую обработку является, вероятно, самым легким сделать на почтовом сервере, с материалом как procmail, Курьер maildrop, amavisd-новый, и т.д.

Amavisd-новый специально предназначено для передачи почты внешним программам обработки перед доставкой, обычно антивирусными и демонами против спама.

Если бы Вы не можете сделать этого на стороне сервера, необходимо было бы записать расширение, но это - вероятно, слишком много работы.

Наконец, возможно, можно удовлетворить хорошую часть потребностей с расширением FiltaQuilla, которое поддерживает регулярные выражения, запуская внешние программы и действия JavaScript. Можно найти больше информации на странице автора.

Лично, если у меня не было доступа к почтовому серверу и если FiltaQuilla не удовлетворил мои потребности, я был бы, принял решение настроить локальный Постфикс / почтовый сервер IMAP, выбирающий почту от ISP и обрабатывающий его перед доставкой с моими пользовательскими сценариями. Это должно быть намного легче, чем запись расширения ТБ. Но это может быть излишество для Ваших потребностей.

4
ответ дан 07.12.2019, 17:02

Вы могли искать прокси POP3/IMAP, который имеет scriptable возможности фильтрации, в которых Вы нуждаетесь. Это мог быть прокси, который работает на том же ПК как Thunderbird.

2
ответ дан 07.12.2019, 17:02

С расширением: http://mesquilla.com/extensions/filtaquilla/

можно создать JavaScript и/или внешние файлы для выполнения, таким образом, он похож на тело, "возможно",

1
ответ дан 07.12.2019, 17:02

Теги

Похожие вопросы