Jak łączyć reguły filtrów w filtrach wiadomości w Thunderbird, aby tworzyć bardziej zaawansowane kryteria filtrów?


13

W Thunderbird można wybrać opcję Dopasuj wszystkie poniższe lub Dopasuj dowolne z poniższych dla danego zestawu reguł filtrowania. Nie ma możliwości swobodnego mieszania operatorów logicznych OR i AND w celu tworzenia bardziej złożonych kryteriów, takich jak ((A AND B) OR (C AND D)) AND E.
Czy jest jakaś wtyczka pozwalająca na osiągnięcie powyższego?

Odpowiedzi:


5

Musiałem odfiltrować kilka różnych tematów pochodzących od jednej osoby, więc moje rozwiązanie było następujące:

  1. Dodano filtr pasujący do któregokolwiek z poniższych i dodałem dowolny temat, który chciałem.
  2. Akcją, którą ustawiłem, by była wykonywana, jest ustawienie priorytetu na najniższy.
  3. Następnie dodałem nowy filtr, aby spełnić wszystkie poniższe kryteria: priorytet jest najniższy, a od zawiera (adres e-mail, z którego chciałem filtrować).
  4. Akcją, którą ustawiłem, było przejście do określonego folderu.

Jedną rzeczą, którą musisz upewnić się, jest to, że pierwszy plik jest wyżej na liście, więc jest wykonywany jako pierwszy. Wiem, że nie jest to najbardziej eleganckie rozwiązanie, ale można je rozszerzyć, aby dopasować do twoich potrzeb.


3

Nie mogę znaleźć dobrego rozszerzenia, aby to zrobić, ale pasek szybkiego wyszukiwania działa równie dobrze, jeśli przeszukujesz tylko jeden folder.

Na przykład - gdybym chciał utworzyć kryteria dla wszystkich wiadomości od Tommy'ego i Billy'ego, ale nie dla tych z Fwd w temacie, a także dla wiadomości od Sandry, w tym przekazów, skonfigurowałbym wyszukiwanie (używając paska szybkiego wyszukiwania z ustawionym wyszukiwaniem według wyrażenia):

((od: Tommy LUB z: Billy) AND - przedmiot: Fwd) LUB (od: Sandra)

Jednak w przypadku wielu folderów nie jest to możliwe.

jot


Niezła uwaga. Szkoda, że ​​ta funkcja nie jest dostępna w module reguł filtrowania.
Piotr Dobrogost

2

Dzięki FiltaQuilla i niektórym działaniom / regułom javascript jest to wykonalne. Jest to jednak przykład z pewnymi modyfikacjami źródła FiltaQuilla, aby uprościć proces.

W tym przykładzie zostaną wykonane trzy etapy filtrowania: oznaczanie - które tylko klasyfikuje wiadomości e-mail. Następnie modyfikacja - wykonuje logiczne obliczenia i modyfikuje temat lub nagłówki wiadomości e-mail. I akcja - wykonywanie rzeczywistej akcji. Każdy etap będzie wymagał normalnej edycji filtrów w oknie dialogowym filtrów Thunderbirda, ale z dodanymi opcjami FiltaQuilla. Etapy 1 i 2 zapisują swoje wyniki w nowo dodanym polu nagłówka wiadomości e-mail, a etapy 2 i 3 wykorzystują wyniki w polu do wykonania logiki przed normalnymi działaniami.

Kroki:

Zainstaluj FiltaQuilla

Wygląda na to, że wiele funkcji działa tylko z Thunderbird 3.1. Dlatego najpierw zaktualizuj do wersji TB 3.1. Następnie zainstaluj FiltaQuilla.

Na karcie preferencji FiltaQuilla włącz „Przyrostek do tematu” i „Akcja JavaScript”.

Zmodyfikuj źródło FiltaQuilla

Edytuj „filtaquilla@mesquilla.com/content/filtaquilla.js” w katalogu rozszerzeń, aby wyglądał tak:

// 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);
    }
  },

Kod zmienia pierwotną akcję „Sufiksu na Temat” na to, że doda sufiksowane ciągi znaków do nowego nagłówka o nazwie „moje słowa kluczowe”. To nowe pole nagłówka zostanie wykorzystane do zachowania wyniku z pierwszych dwóch etapów filtrowania w postaci słów łańcuchowych.

Ta zmiana kodu źródłowego polega na ponownym użyciu akcji „Sufiks”, ponieważ zwykle sufiks w temacie nie jest zbyt przydatny. Dlatego ponowne użycie jego wewnętrznych wnętrzności nie wpłynie znacząco na użyteczność FiltaQuilla. Jeśli tego nie zrobisz, oficjalne żądanie funkcji powinno zostać wysłane do twórcy FiltaQuilla, aby dodać żądaną funkcję, lub będziesz musiał napisać nieco więcej kodu JavaScript w warunku filtru jako warunek JavaScript.

Utwórz reguły filtrowania do oznaczania

Przykładem jest utworzenie szeregu reguł, z których każda będzie miała tylko jedną akcję: „Sufiks do tematu”, ale każde z sufiksów będzie określać, jaki wynik uzyska. Na przykład sklasyfikuj wiadomości e-mail według miejsca, z którego pochodzą, dodając przyrostki „firma-A”, „firma-B”, ... itd. Pamiętaj, że te słowa „firma-A”, „firma-B” itp. ., zostaną połączone w polu nagłówka „myke words”.

Umieść te reguły na początku listy reguł filtrowania.

Utwórz reguły filtrów dla modyfikacji logicznej

W polu rozwijanym reguły filtru pola nagłówka użyj „Dostosuj”, aby dodać „moje słowa kluczowe” do listy. Następnie wybierz „moje słowa kluczowe zawiera firmę-” dla warunku w oknie dialogowym filtra.

Wybierz „JavaScript Action” w sekcji akcji. Dodaj trochę kodu:

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; */

W tym momencie skrypt może uzyskać dostęp do wszystkich wyników oznaczania z pola nagłówka „myke words”. Wystarczy przeanalizować ciąg, a następnie można zastosować dowolną logikę po analizie, aby uzyskać pożądany wynik logiki. Na przykład, możesz zastosować, jeśli „A” i „B”, dodać „wynik-AB” do „moich słów kluczowych” itp. Następnie w następnym etapie sprawdź, czy „moje słowa kluczowe zawiera wynik-AB” dla faktycznego znaczenia dla „A i B „.

Powyższy przykład pokazuje również, że „[VN IGNORE]” można wstawić do wiersza tematu, aby wskazać, która z trzech firm brała udział w temacie wiadomości e-mail.

Utwórz reguły filtrowania dla akcji

Teraz utwórz regułę działania w oparciu o wartości zawarte w „myke words”. To będą tylko normalne ustawienia.

Uwagi:

FiltaQuilla obsługuje skrypty javascript w sekcji warunku. Dlatego jeśli nie chcesz zmieniać kodu źródłowego rozszerzenia, musisz napisać nieco więcej kodu w sekcji warunków okna dialogowego filtru. Za pomocą tego kodu można również wykonać dowolne obliczenia logiczne.

Sprawdź stronę FiltaQuilla, aby uzyskać więcej informacji.


1

Być może możesz użyć znaczników dla każdej podsekcji wyrażenia. if ((z: Tommy OR z: Billy) to oznacz tagiem „TomAndBilly”. Następnie filtruj szukając nie tematu: Fwd ORAZ tag TomAndBilly. Nie próbowałem tego, myślę, że to nie zadziała, jeśli TB nie będzie filtruj więcej niż jeden raz. Może możesz też zmusić go do więcej niż raz, odbijając pocztę do różnych folderów, a nawet kont (ale wtedy zaczyna się naprawdę brzydko).

Słyszałem, że lepsze oznaczanie miało miejsce w TB3, ale nie wydaje się to oczywiste w interfejsie użytkownika.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.