Wie kann man Filterregeln in Nachrichtenfiltern in Thunderbird kombinieren, um erweiterte Filterkriterien zu erstellen?


13

In Thunderbird können Sie für einen bestimmten Satz von Filterregeln entweder Alle folgenden Übereinstimmungen oder Alle folgenden Übereinstimmungen auswählen . Es gibt keine Möglichkeit, logische OR- und AND- Operatoren frei zu mischen , um komplexere Kriterien wie ((A UND B) ODER (C UND D)) UND E zu erstellen.
Gibt es ein Plug-In, mit dem das oben Genannte erreicht werden kann?

Antworten:


5

Ich musste eine Reihe verschiedener Themen filtern, die von einer Person kamen. Meine Lösung war also:

  1. Es wurde ein Filter hinzugefügt, der mit einem der folgenden Elemente übereinstimmt, und es wurde ein beliebiges von mir gewünschtes Thema hinzugefügt.
  2. Die von mir festgelegte Aktion besteht darin, die Priorität auf die niedrigste zu setzen.
  3. Dann habe ich einen neuen Filter hinzugefügt, der mit allen folgenden Kriterien übereinstimmt: Priorität ist am niedrigsten und von enthält (die E-Mail-Adresse, nach der ich filtern wollte).
  4. Die von mir festgelegte Aktion bestand darin, in einen bestimmten Ordner zu wechseln.

Eine Sache, die Sie sicherstellen müssen, ist, dass der erste Filer ganz oben auf der Liste steht, damit er zuerst ausgeführt wird. Ich weiß, dass es nicht die eleganteste Lösung ist, aber es kann erweitert werden, um Ihren Bedürfnissen zu entsprechen.


3

Ich finde anscheinend keine gute Erweiterung, um dies zu tun, aber die Symbolleiste für die Schnellsuche funktioniert genauso gut, wenn Sie nur einen Ordner durchsuchen.

Zum Beispiel - wenn ich Kriterien für alle Nachrichten von Tommy und Billy erstellen wollte, aber nicht für Nachrichten mit Fwd im Betreff, sowie für Nachrichten von Sandra einschließlich Weiterleitungen, würde ich eine Suche einrichten (indem ich die Schnellsuchleiste verwende, um danach zu suchen) durch Ausdruck):

((von: Tommy ODER von: Billy) UND -subjekt: Fwd) ODER (von: Sandra)

Bei mehreren Ordnern ist dies jedoch nicht möglich.

J


Nette Bemerkung. Schade, dass diese Funktion im Filterregelmodul nicht verfügbar ist.
Piotr Dobrogost

2

Mit FiltaQuilla und einigen Javascript-Aktionen / -Regeln ist dies möglich. Hier ist es jedoch ein Beispiel mit einigen Änderungen an der FiltaQuilla-Quelle, um den Vorgang zu vereinfachen.

In diesem Beispiel werden drei Filterstufen ausgeführt: Markieren - Damit werden nur die E-Mails klassifiziert. Dann modifizieren - das führt eine logische Berechnung durch und modifiziert den Betreff oder die Überschriften der E-Mails. Und Aktion - die eigentliche Aktion ausführen. In jeder Phase werden Filter im Thunderbird-Filterdialog normalerweise bearbeitet, jedoch mit zusätzlichen Optionen von FiltaQuilla. Stufe 1 und 2 speichern ihre Ergebnisse in einem neu hinzugefügten E-Mail-Header-Feld, und Stufe 2 und 3 verwenden die Ergebnisse im Feld, um vor normalen Aktionen eine Logik auszuführen.

Schritte:

Installieren Sie FiltaQuilla

Es sieht so aus, als ob viele Funktionen nur mit Thunderbird 3.1 funktionieren. Rüsten Sie also zuerst auf TB 3.1 auf. Dann installieren Sie FiltaQuilla.

Aktivieren Sie auf der Registerkarte "FiltaQuilla-Einstellungen" die Optionen "Suffix to Subject" und "Javascript Action".

Ändern Sie FiltaQuilla Source

Bearbeiten Sie "filtaquilla@mesquilla.com/content/filtaquilla.js" im Erweiterungsverzeichnis, sodass es so aussieht:

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

Der Code ändert die ursprüngliche Aktion von "Suffix to Subject" dahingehend, dass die angehängten Zeichenfolgen in einen neuen Header mit dem Namen "mykeywords" eingefügt werden. Dieses neue Header-Feld wird verwendet, um das Ergebnis der ersten beiden Filterstufen in Form von String-Wörtern zu speichern.

Diese Änderung des Quellcodes dient der Wiederverwendung der Aktion "Suffix", da das Hinzufügen von Suffixen zu einem Betreff normalerweise nicht sehr nützlich ist. Daher würde die Wiederverwendung der inneren Eingeweide die Benutzerfreundlichkeit von FiltaQuilla nicht wesentlich beeinträchtigen. Andernfalls sollte eine offizielle Funktionsanforderung an FiltaQuilla Creator gesendet werden, um die gewünschte Funktion hinzuzufügen, oder Sie müssen etwas mehr JavaScript-Code in die Filterbedingung als Javasctipt-Bedingung schreiben.

Erstellen Sie Filterregeln für die Markierung

Ein Beispiel ist, eine Reihe von Regeln zu erstellen, für die jeweils nur eine Aktion ausgeführt wird: "Suffix to Subject" (Suffix an Betreff). Klassifizieren Sie zum Beispiel die E-Mails danach, woher sie stammen, indem Sie die Wörter "Firma-A", "Firma-B", ... usw. anhängen. Denken Sie daran, dass diese Wörter "Firma-A", "Firma-B" usw ., wird in das Header-Feld "mykeywords" eingebunden.

Platzieren Sie diese Regeln an den Anfang der Liste der Filterregeln.

Erstellen Sie Filterregeln für die logische Änderung

Verwenden Sie im Dropdown-Feld "Header-Feld für Filterregeln" die Option "Anpassen", um der Liste "mykeywords" hinzuzufügen. Wählen Sie dann "mykeywords includes company-" für die Bedingung im Filterdialog.

Wählen Sie "Javascript Action" im Aktionsbereich. Fügen Sie einen Code wie diesen hinzu:

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

Zu diesem Zeitpunkt kann das Skript über das Header-Feld "mykeywords" auf alle Markierungsergebnisse zugreifen. Analysieren Sie einfach die Zeichenfolge, und nach dem Parsen kann eine beliebige Logik angewendet werden, um das gewünschte Logikergebnis zu erzielen. Sie können beispielsweise festlegen, ob "A" und "B", "result-AB" zu "mykeywords" usw. hinzugefügt werden sollen. Überprüfen Sie dann in der nächsten Stufe, ob "mykeywords" result-AB enthält, um die tatsächliche Bedeutung für "A und B" zu ermitteln ".

Das obige Beispiel zeigt auch, dass der Betreffzeile "[VN IGNORE]" vorangestellt werden kann, um anzugeben, welche der drei Unternehmen an der Betreff-E-Mail beteiligt waren.

Erstellen Sie Filterregeln für die Aktion

Erstellen Sie nun die Aktionsregel basierend auf den in "mykeywords" enthaltenen Werten. Dies sind nur normale Einstellungen.

Anmerkungen:

Die FiltaQuilla unterstützt Javascripts im Bedingungsbereich. Wenn Sie also den Quellcode der Erweiterung nicht ändern möchten, müssen Sie im Bedingungsabschnitt des Filterdialogs etwas mehr Code schreiben. Mit diesem Code kann auch jede logische Berechnung durchgeführt werden.

Weitere Informationen finden Sie auf der FiltaQuilla-Website.


1

Vielleicht könnten Sie Tags für jeden Unterabschnitt des Ausdrucks verwenden. if ((von: Tommy ODER von: Billy) dann tag mit "TomAndBilly" tag. Dann filter suche nach nicht Betreff: Fwd AND tag TomAndBilly. Ich habe es nicht ausprobiert, ich denke, es wird nicht funktionieren, wenn TB nicht Filter mehr als einmal. Vielleicht können Sie es auch zwingen, mehr als einmal zu gehen, indem Sie die E-Mails in verschiedene Ordner oder sogar Konten leiten (aber dann fängt es an, wirklich hässlich zu werden).

Ich habe gehört, dass in TB3 bessere Markierungen fällig sind, aber dies scheint in der Benutzeroberfläche nicht offensichtlich zu sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.