Come combinare le regole di filtro nei filtri dei messaggi in Thunderbird per creare criteri di filtro più avanzati?


13

In Thunderbird è possibile scegliere Abbina tutto quanto segue o Abbina uno dei seguenti per un determinato set di regole di filtro. Non c'è modo di mescolare liberamente operatori logici OR e AND per creare criteri più complessi come ((A AND B) OR (C AND D)) E E.
Esiste un plug-in che consenta di ottenere quanto sopra?

Risposte:


5

Avevo bisogno di filtrare un sacco di argomenti diversi provenienti da una persona, quindi la mia soluzione era questa:

  1. Aggiunto un filtro per abbinare uno dei seguenti, e aggiunto uno qualsiasi dei soggetti che volevo.
  2. L'azione che ho impostato per eseguire è impostare la priorità al più basso.
  3. Quindi ho aggiunto un nuovo filtro per soddisfare tutti i seguenti elementi: la priorità è la più bassa e da contiene (l'indirizzo e-mail da cui volevo filtrare).
  4. L'azione che ho impostato è stata quella di passare a una determinata cartella.

Una cosa che devi accertarti è che il primo filer sia in cima all'elenco, quindi verrà eseguito per primo. So che non è la soluzione più elegante ma può essere ampliata per adattarsi alle tue esigenze.


3

Non riesco a trovare una buona estensione per farlo, ma la barra degli strumenti di ricerca rapida funzionerebbe altrettanto bene se stai solo cercando in una singola cartella.

Ad esempio - se volessi creare criteri per tutti i messaggi di Tommy e Billy, ma non quelli con Fwd nell'oggetto, così come i messaggi di Sandra, compresi i forward, imposterei una ricerca (usando la barra degli strumenti di ricerca rapida con essa impostata per la ricerca per espressione):

((da: Tommy OR da: Billy) AND -soggetto: Fwd) OR (da: Sandra)

Tuttavia, con più cartelle, questo non è possibile.

J


Bella osservazione. È un peccato che questa funzione non sia disponibile nel modulo delle regole di filtro.
Piotr Dobrogost,

2

Con FiltaQuilla e alcune azioni / regole javascript, è fattibile. Tuttavia, qui è un esempio con alcune modifiche alla fonte FiltaQuilla in modo da semplificare il processo.

L'esempio qui eseguirà tre fasi di filtraggio: marcatura - che classifica solo le e-mail. Quindi, modificando, questo esegue un calcolo logico e modifica l'oggetto o le intestazioni delle e-mail. E, azione - facendo l'azione reale. Ciascuna delle fasi prevede la modifica dei filtri nella finestra di dialogo del filtro Thunderbird normalmente, ma con opzioni aggiunte da FiltaQuilla. Le fasi 1 e 2 salvano i risultati in un campo di intestazione e-mail appena aggiunto e le fasi 2 e 3 utilizzano i risultati nel campo per eseguire alcune logiche prima delle normali azioni.

passi:

Installa FiltaQuilla

Sembra che molte funzioni funzionino solo con Thunderbird 3.1. Quindi aggiornare prima a TB 3.1. Quindi installare FiltaQuilla.

Nella scheda delle preferenze di FiltaQuilla, abilita "Suffisso per soggetto" e "Azione Javascript".

Modifica sorgente FiltaQuilla

Modifica "filtaquilla@mesquilla.com/content/filtaquilla.js" nella directory delle estensioni in modo che appaia così:

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

Il codice modifica l'azione originale di "Suffisso in Oggetto" in quanto aggiungerà le stringhe con suffisso in una nuova intestazione denominata "parole chiave". Questo nuovo campo di intestazione verrà utilizzato per mantenere il risultato delle prime due fasi del filtro sotto forma di parole stringa.

Questa modifica del codice sorgente serve a riutilizzare l'azione "Suffisso" poiché di solito il suffisso su un argomento non è molto utile. Pertanto, il riutilizzo delle budella interne non influirebbe molto sull'usabilità di FiltaQuilla. In caso contrario, è necessario inviare una richiesta ufficiale di funzionalità al creatore di FiltaQuilla per aggiungere la funzionalità desiderata oppure è necessario scrivere un po 'più di codice Javascript nella condizione di filtro come condizione Javasctipt.

Crea regole di filtro per la marcatura

Un esempio è quello di creare una serie di regole ognuna avrà una sola azione: "Suffisso per soggetto", ma le parole con il suffisso identificheranno ognuna il risultato ottenuto. Ad esempio, classificare le e-mail in base alla loro provenienza inserendo il suffisso "azienda-A", "azienda-B", ... ecc. Ricordare che queste parole "azienda-A", "azienda-B", ecc. ., verranno concatenati nel campo di intestazione "parole chiave".

Posizionare queste regole all'inizio dell'elenco delle regole di filtro.

Crea regole di filtro per la modifica logica

Nella casella di riepilogo del campo dell'intestazione delle regole di filtro, utilizzare "Personalizza" per aggiungere "parole chiave" all'elenco. Quindi scegliere "mykeywords contiene società-" per la condizione nella finestra di dialogo del filtro.

Scegli "Azione Javascript" nella sezione azione. Aggiungi un codice come questo:

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 questo punto, tutti i risultati della marcatura sono accessibili dallo script dal campo di intestazione "parole chiave". Basta analizzare la stringa, quindi qualsiasi logica può essere applicata dopo l'analisi per ottenere il risultato logico che ti piace. Ad esempio, è possibile applicare se "A" e "B", aggiungere "risultato-AB" a "parole chiave", ecc. Quindi, nella fase successiva, controllare "parole chiave contiene risultato-AB" per il significato effettivo di "A e B ".

L'esempio sopra mostra anche che "[VN IGNORE]" può essere anteposto alla riga dell'oggetto per indicare quale delle tre società è stata coinvolta nell'e-mail dell'oggetto.

Crea regole filtro per l'azione

Ora crea la regola di azione in base ai valori contenuti in "parole chiave". Queste saranno solo impostazioni normali.

Appunti:

FiltaQuilla supporta javascripts nella sezione condition. Pertanto, se non si desidera modificare il codice sorgente dell'estensione, è necessario scrivere un po 'più di codice nella sezione delle condizioni della finestra di dialogo del filtro. Con quel codice si può fare anche qualsiasi calcolo logico.

Controlla il sito FiltaQuilla per molte più informazioni.


1

Forse potresti usare i tag per ogni sottoclausola dell'espressione. if ((from: Tommy OR from: Billy) quindi tagga con il tag "TomAndBilly". Quindi filtra cercando non soggetto: Fwd AND tag TomAndBilly. Non ho provato questo, immagino che non funzionerà se TB non lo farà filtrare più di una volta. Forse puoi anche forzarlo ad andare più di una volta facendo rimbalzare la posta in cartelle diverse o persino account (ma poi inizia a diventare davvero brutto).

Ho sentito che la migliore codifica era dovuta in TB3, ma non sembra evidente nell'interfaccia utente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.