Avec FiltaQuilla, et certaines actions / règles javascript, c'est faisable. Cependant, voici un exemple avec quelques modifications à la source FiltaQuilla afin de simplifier le processus.
L'exemple ici fera trois étapes de filtrage: le marquage - qui classe uniquement les e-mails. Ensuite, la modification - cela fait un calcul logique et modifie l'objet ou les en-têtes de l'e-mail. Et, action - faire l'action réelle. Chacune des étapes impliquera la modification des filtres dans la boîte de dialogue du filtre Thunderbird normalement, mais avec des options ajoutées par FiltaQuilla. Les étapes 1 et 2 enregistrent leurs résultats dans un champ d'en-tête d'e-mail nouvellement ajouté, et les étapes 2 et 3 utilisent les résultats dans le champ pour effectuer une logique avant les actions normales.
Pas:
Installer FiltaQuilla
Il semble que de nombreuses fonctions ne fonctionnent qu'avec Thunderbird 3.1. Mettez donc à niveau vers TB 3.1 en premier. Installez ensuite FiltaQuilla.
Dans l'onglet de préférence FiltaQuilla, activez "Suffixe pour le sujet" et "Action Javascript".
Modifier la source FiltaQuilla
Modifiez "filtaquilla@mesquilla.com/content/filtaquilla.js" dans le répertoire d'extension pour qu'il ressemble à ceci:
// 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);
}
},
Le code modifie l'action d'origine de "Suffix to Subject" en ce qu'il ajoutera les chaînes suffixées dans un nouvel en-tête nommé "mykeywords". Ce nouveau champ d'en-tête sera utilisé pour conserver le résultat des deux premières étapes de filtrage sous forme de mots de chaîne.
Cette modification du code source consiste à réutiliser l'action "Suffixe" car généralement le suffixe à un sujet n'est pas très utile. Ainsi, la réutilisation de ses tripes internes n'affecterait pas beaucoup l'utilisabilité de FiltaQuilla. Si ce n'est pas le cas, une demande officielle de fonctionnalité doit être envoyée au créateur de FiltaQuilla pour ajouter la fonctionnalité souhaitée, ou vous devrez écrire un peu plus de code Javascript dans la condition de filtre en tant que condition Javasctipt.
Créer des règles de filtrage pour le marquage
Un exemple est de créer une série de règles, chacune n'aura qu'une seule action: "Suffixe au sujet", mais les mots suffixés identifieront chacun le résultat obtenu. Par exemple, classifiez les e-mails en fonction de leur provenance en suffixant les mots "entreprise-A", "entreprise-B", ..., etc. N'oubliez pas que ces mots "entreprise-A", "entreprise-B", etc. ., sera concaténé dans le champ d'en-tête "mykeywords".
Placez ces règles au début de la liste des règles de filtrage.
Créer des règles de filtrage pour la modification logique
Dans la zone de liste déroulante des règles de filtrage, utilisez "Personnaliser" pour ajouter "mes mots-clés" à la liste. Choisissez ensuite "mykeywords contains company-" comme condition dans la boîte de dialogue de filtrage.
Choisissez "Javascript Action" dans la section action. Ajoutez du code comme celui-ci:
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; */
À ce stade, tous les résultats de marquage sont accessibles par le script à partir du champ d'en-tête "mykeywords". Il suffit d'analyser la chaîne, puis toute logique peut être appliquée après l'analyse pour obtenir le résultat logique que vous souhaitez. Par exemple, vous pouvez appliquer si "A" et "B", ajouter "résultat-AB" à "mes mots-clés", etc. ".
L'exemple ci-dessus montre également que le "[VN IGNORE]" peut être ajouté à la ligne d'objet pour indiquer laquelle des trois sociétés a été impliquée dans l'e-mail d'objet.
Créer des règles de filtrage pour l'action
Créez maintenant la règle d'action basée sur les valeurs contenues dans "mykeywords". Ce ne seront que des paramètres normaux.
Remarques:
Le FiltaQuilla prend en charge les javascripts dans la section condition. Ainsi, si vous ne souhaitez pas modifier le code source de l'extension, vous devrez écrire un peu plus de code dans la section condition de la boîte de dialogue de filtrage. Avec ce code, tout calcul logique peut également être effectué.
Consultez le site FiltaQuilla pour plus d'informations.