Як поєднувати правила фільтру у фільтрах повідомлень у Thunderbird, щоб створити більш досконалі критерії фільтра?


13

У програмі Thunderbird можна вибрати або Зрівняти все подане нижче, або Зрівняти будь-яке з наведених нижче для заданого набору правил фільтра. Там немає ніякого способу , щоб змішати АБО і І логічні оператори вільно створювати більш складні критерії , як ((А і В) або (С і D)) і E.
Чи є плагін дозволяє досягти вище?

Відповіді:


5

Мені потрібно було відфільтрувати купу різних предметів від однієї людини, тому моє рішення було таким:

  1. Додав фільтр, щоб відповідати будь-якому з наведених нижче, і додав будь-який із бажаних предметів.
  2. Дія, яку я призначив йому, полягає у встановленні пріоритету на мінімальному рівні.
  3. Потім я додав новий фільтр, щоб відповідати всім наступному: пріоритет найнижчий та з вмісту (адреса електронної пошти, з якої я хотів відфільтрувати).
  4. Дія, яку я встановила, полягала в тому, щоб перейти до певної папки.

Одне, що вам потрібно переконатися, - це те, що перший файл вище в списку, щоб він був виконаний першим. Я знаю, що це не найелегантніше рішення, але його можна розширити відповідно до ваших потреб.


3

Я не можу знайти гарне розширення для цього, але панель інструментів швидкого пошуку буде функціонувати так само добре, якщо ви просто шукаєте одну папку.

Наприклад - якщо б я хотів створити критерії для всіх повідомлень від Томмі та Біллі, але не для тих, хто має Fwd в темі, а також повідомлень від Сандри, включаючи вперед, я налаштував би пошук (використовуючи панель інструментів швидкого пошуку, встановлену для пошуку за виразом):

((від: Томмі АБО від: Біллі) І -предмет: Fwd) АБО (від: Сандра)

Однак із кількома папками це неможливо.

J


Приємне зауваження. Шкода, що ця функція недоступна в модулі правил фільтра.
Пьотр Доброгост

2

З FiltaQuilla та деякими діями / правилами JavaScript це можливо. Однак тут наводиться приклад з деякими модифікаціями джерела FiltaQuilla, щоб спростити процес.

У цьому прикладі буде зроблено три етапи фільтрації: маркування - що класифікує лише електронні листи. Потім, модифікація - це робить деякі логічні обчислення та змінює тематику чи заголовки електронної пошти. І, дія - здійснення фактичної дії. Кожен з етапів передбачає редагування фільтрів у діалоговому вікні фільтра Thunderbird, але з доданими параметрами FiltaQuilla. Етапи 1 і 2 зберігають свої результати в щойно доданому полі заголовка електронної пошти, а на етапах 2 і 3 використовують результати в полі, щоб виконати певну логіку перед звичайними діями.

Кроки:

Встановіть FiltaQuilla

Здається, багато функцій працюють лише з Thunderbird 3.1. Таким чином, спочатку перейдіть до ТБ 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);
    }
  },

Код змінює оригінальну дію "Суфікс до теми" на те, що додасть суфіксальні рядки до нового заголовка під назвою "мої ключові слова". Це нове поле заголовка буде використано для збереження результату з перших двох етапів фільтрації у формах рядкових слів.

Ця зміна вихідного коду полягає в повторному використанні дії "Суфікс", оскільки зазвичай суфікс до теми не дуже корисний. Таким чином, повторне використання внутрішніх кишок не сильно вплине на зручність використання FiltaQuilla. Якщо цього не зробити, офіційний запит на функцію повинен бути надісланий творцю FiltaQuilla, щоб додати потрібну функцію, або вам потрібно буде написати трохи більше коду Javascript у стані фільтра як стан Javasctipt.

Створіть правила фільтрування для маркування

Наприклад, створити ряд правил, кожне з яких буде мати лише одну дію: "Суфікс до теми", але слова суфіксів визначають, який результат він отримав. Наприклад, класифікуйте електронні листи відповідно до того, звідки вони походять із суфіксами слів "компанія-A", "компанія-B", ... і т. Д. Пам'ятайте, що ці слова "компанія-A", "компанія-B" тощо ., буде об'єднано в поле заголовка "мої ключові слова".

Розмістіть ці правила на початку списку правил фільтра.

Створіть правила фільтра для логічної модифікації

У спадному списку правил фільтру у полі заголовка використовуйте "Налаштувати", щоб додати в список "мої ключові слова". Потім у діалоговому вікні фільтра виберіть "умова".

У розділі дій виберіть "Дія 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; */

На цьому етапі до всіх результатів маркування можна отримати доступ зі скрипту з поля заголовка «мої ключі». Просто проаналізуйте рядок, тоді будь-яка логіка може бути застосована після синтаксичного аналізу для досягнення логічного результату, який вам подобається. Наприклад, ви можете застосувати, якщо "A" і "B", додайте "result-AB" до "mykeywords" і т. Д. Потім на наступному етапі встановіть прапорець "mykeywords contains result-AB" на те, що насправді означає для "A і B" ".

Вищенаведений приклад також показує, що "[VN IGNORE]" може бути попередньо доданий до рядка теми, щоб вказати, яка з трьох компаній була залучена до теми електронної пошти.

Створіть правила фільтра для дії

Тепер створіть правило дії на основі значень, що містяться в "моїх ключових словах". Це будуть просто звичайні налаштування.

Примітки:

FiltaQuilla підтримує javascripts у розділі стану. Таким чином, якщо ви не хочете змінювати вихідний код розширення, вам потрібно буде написати трохи більше коду в розділі стану діалогового вікна фільтра. З цим кодом можна зробити і будь-які логічні розрахунки.

Відвідайте сайт FiltaQuilla для отримання додаткової інформації.


1

Можливо, ви можете використовувати теги для кожного підпункту виразу. якщо ((від: Томмі АБО від: Біллі), то позначте тегом "TomAndBilly". Потім фільтр шукає не предмет: Fwd І тег TomAndBilly. Я не пробував цього, я думаю, це не спрацює, якщо туберкульоз не буде фільтруйте не один раз. Можливо, ви також можете змусити його не раз переходити, пересилаючи пошту до різних папок або навіть облікових записів (але тоді це стає по- справжньому некрасивим).

Я чув, що краще позначення було пов'язане з TB3, але це не здається очевидним в інтерфейсі користувача.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.