С FiltaQuilla и некоторыми действиями / правилами javascript это выполнимо. Однако здесь приведен пример с некоторыми модификациями исходного кода FiltaQuilla для упрощения процесса.
В приведенном здесь примере выполняется три этапа фильтрации: маркировка, которая классифицирует только электронные письма. Затем изменение - это делает некоторые логические вычисления и изменяет тему письма или заголовки. И, действие - делать фактическое действие. Каждый из этапов будет включать редактирование фильтров в диалоге фильтров Thunderbird в обычном режиме, но с добавленными опциями FiltaQuilla. Этапы 1 и 2 сохраняют свои результаты во вновь добавленном поле заголовка электронного письма, а этапы 2 и 3 используют результаты в поле, чтобы выполнить некоторую логику перед обычными действиями.
шаги:
Установить FiltaQuilla
Похоже, многие функции работают только с Thunderbird 3.1. Таким образом, сначала обновите до TB 3.1. Затем установите FiltaQuilla.
На вкладке настроек FiltaQuilla включите «Суффикс к теме» и «Действие Javascript».
Изменить источник FiltaQuilla
Измените «filtaquilla@mesquilla.com/content/filtaquilla.js» в каталоге расширений так, чтобы он выглядел следующим образом:
// Suffix to subject
self.subjectSuffix =
{
...
apply: function(aMsgHdrs, aActionValue, aListener, aType, aMsgWindow)
{
for (var i = 0; i < aMsgHdrs.length; i++)
{
var msgHdr = aMsgHdrs.queryElementAt(i, Ci.nsIMsgDBHdr);
////var appSubject = _mimeAppend(aActionValue, msgHdr.subject, false);
////msgHdr.subject = appSubject;
var headerName = "mykeywords";
var headerValue = msgHdr.getStringProperty(headerName);
msgHdr.setStringProperty(headerName, headerValue + " " + aActionValue);
headerValue = msgHdr.getStringProperty(headerName);
// Cu.reportError("chg : " + headerName + " : " + headerValue);
}
},
Код изменяет исходное действие «Suffix to Subject» на то, что он добавляет строки с суффиксами в новый заголовок с именем «mykeywords». Это новое поле заголовка будет использоваться для сохранения результата первых двух этапов фильтрации в виде строковых слов.
Это изменение исходного кода заключается в повторном использовании действия «Суффикс», поскольку суффиксы к теме обычно не очень полезны. Таким образом, повторное использование его внутренних функций не сильно повлияет на удобство использования FiltaQuilla. Если этого не сделать, официальный запрос функции должен быть отправлен в FiltaQuilla, чтобы добавить нужную функцию, или вам нужно будет написать немного больше кода Javascript в условии фильтра как условие Javasctipt.
Создать правила фильтра для маркировки
Примером является создание серии правил, каждое из которых будет иметь только одно действие: «Суффикс к теме», но каждое суффиксное слово будет идентифицировать, какой результат он получил. Например, классифицируйте электронные письма в соответствии с тем, откуда они, добавив слова «компания-А», «компания-Б», ... и т. Д. Помните, что эти слова «компания-А», «компания-Б» и т. Д. ., будет объединен в поле заголовка "mykeywords".
Поместите эти правила в начало списка правил фильтра.
Создать правила фильтра для логической модификации
В выпадающем поле заголовка поля правил фильтрации используйте «Настроить», чтобы добавить «mykeywords» в список. Затем выберите «mykeywords содержит company-» для условия в диалоговом окне фильтра.
Выберите «Действие Javascript» в разделе действий. Добавьте код, подобный этому:
for (let index = 0; index < msgHdrs.length; index++)
{
let hdr = msgHdrs.queryElementAt(index, Ci.nsIMsgDBHdr);
let s = hdr.getStringProperty("mykeywords");
let v = s.split("company-"); /* result words are in v[] now */
let r = ""; /* logic conversion result */
let cnt = 0;
if ( v != undefined && v.length != undefined && v.length > 0) {
let lastVN = 0;
for(var i=v.length -1; i>=0; i--) {
let ss = v[i];
if ( ss.length > 1 ) {
ss = ss.substring(0);
/* convert company A into VIP, B into NORMAL, C into IGNORE.
* Assume the marking section starts with A,B, then C thus
* C gets parsed first, then A and B.
*/
if (ss.search(/A/) == 0) { ss = "V"; lastVN = 1; } /*VIP*/
else if (ss.search(/B/) == 0 ) { ss = "N"; lastVN = 1; } /*NORMAL*/
else if (ss.search(/C/) == 0 ) { ss = "IGNORE"; }
/* prepend subject line */
if ( cnt == 0 ) { r = ss + "] ";
} else { if (lastVN == 0) r = ss + " " + r; else r = ss + r; }
cnt ++;
}
} /* for(var i=v.length -1; */
if ( cnt > 0 ) { r = "[" + r; }
} /* if ( v != undefined && */
hdr.subject = r + hdr.subject;
} /* for (let index = 0; */
На этом этапе все результаты маркировки доступны для скрипта из поля заголовка «mykeywords». Просто проанализируйте строку, и после синтаксического анализа может быть применена любая логика для достижения желаемого логического результата. Например, вы можете применить «A» и «B», добавить «result-AB» к «mykeywords» и т. Д. Затем на следующем этапе проверить «mykeywords содержит result-AB» для фактического значения «A и B». ».
Вышеприведенный пример также показывает, что «[VN IGNORE]» может быть добавлен перед строкой темы, чтобы указать, какая из трех компаний участвовала в теме электронного письма.
Создать правила фильтра для действий
Теперь создайте правило действия на основе значений, содержащихся в «mykeywords». Это будут просто нормальные настройки.
Примечания:
FiltaQuilla поддерживает JavaScript в разделе условий. Таким образом, если вы не хотите изменять исходный код расширения, вам нужно написать немного больше кода в разделе условий диалогового окна фильтра. С этим кодом можно выполнять любые логические вычисления.
Проверьте сайт FiltaQuilla для получения дополнительной информации.