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.