Como combinar regras de filtro em filtros de mensagens no Thunderbird para criar critérios de filtro mais avançados?

13

No Thunderbird pode-se escolher qualquer Corresponder a todos os seguintes ou Combinar qualquer dos seguintes para um determinado conjunto de regras de filtragem. Não há como combinar OR e AND operadores lógicos livremente para criar critérios mais complexos como ((A AND B) OR (C AND D)) AND E.
Existe algum plug-in que permita alcançar o que foi mencionado acima?

Piotr Dobrogost
fonte

Respostas:

5

Eu precisava filtrar vários assuntos diferentes vindos de uma pessoa, então minha solução foi a seguinte:

  1. Adicionado um filtro para corresponder a qualquer um dos itens a seguir e adicionado qualquer um dos assuntos que eu queria.
  2. A ação que eu o defino é definir a prioridade como mais baixa.
  3. Em seguida, adicionei um novo filtro para corresponder a todos os seguintes itens: a prioridade é mais baixa e from contém (o endereço de e-mail do qual eu queria filtrar).
  4. A ação que defini foi mover para uma determinada pasta.

Uma coisa que você precisa ter certeza é que o primeiro arquivador está mais alto na lista para que seja executado primeiro. Sei que não é a solução mais elegante, mas pode ser expandida para atender às suas necessidades.

Angel Delgado
fonte
3

Não consigo encontrar uma boa extensão para fazer isso, mas a barra de ferramentas de pesquisa rápida também funcionaria se você estivesse pesquisando em uma única pasta.

Por exemplo - se eu quisesse criar critérios para todas as mensagens de Tommy e Billy, mas não aquelas com Fwd no assunto, bem como as mensagens de Sandra, incluindo encaminhamentos, eu configuraria uma pesquisa (usando a barra de ferramentas de pesquisa rápida com ela definida para pesquisar por expressão):

((de: Tommy OR de: Billy) AND -subject: Fwd) OR (de: Sandra)

No entanto, com várias pastas, isso não é possível.

J

JDB
fonte
Boa observação. É uma pena que esse recurso não esteja disponível no módulo de regras de filtro.
Piotr Dobrogost 6/10/09
2

Com o FiltaQuilla, e algumas ações / regras em javascript, é possível. No entanto, aqui está um exemplo com algumas modificações na fonte do FiltaQuilla para simplificar o processo.

O exemplo aqui fará três estágios de filtragem: marcação - que apenas classifica os e-mails. Em seguida, modificando - isso faz alguma computação lógica e modifica o assunto ou os cabeçalhos do email. E, ação - fazendo a ação real. Cada um dos estágios envolverá a edição de filtros na caixa de diálogo de filtro do Thunderbird normalmente, mas com opções adicionadas pelo FiltaQuilla. Os estágios 1 e 2 salvam seus resultados em um campo de cabeçalho de email recém-adicionado, e os estágios 2 e 3 usam os resultados no campo para fazer alguma lógica antes das ações normais.

Passos:

Instale o FiltaQuilla

Parece que muitas funções estão funcionando apenas com o Thunderbird 3.1. Assim, atualize para o TB 3.1 primeiro. Em seguida, instale o FiltaQuilla.

Na guia de preferências do FiltaQuilla, ative "Sufixo ao assunto" e "Ação Javascript".

Modificar fonte do FiltaQuilla

Edite "[email protected]/content/filtaquilla.js" no diretório de extensão para que fique assim:

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

O código altera a ação original de "Sufixo para o assunto" e adiciona as seqüências com sufixo a um novo cabeçalho chamado "mykeywords". Este novo campo de cabeçalho será usado para manter o resultado dos dois primeiros estágios de filtragem nas formas de palavras de sequência.

Essa alteração no código-fonte é reutilizar a ação "Sufixo", pois geralmente o sufixo de um assunto não é muito útil. Portanto, reutilizar suas entranhas internas não afetaria muito a usabilidade do FiltaQuilla. Caso contrário, uma solicitação oficial de recurso deve ser enviada ao criador do FiltaQuilla para adicionar o recurso que você deseja, ou você precisará escrever um pouco mais de código Javascript na condição de filtro como condição de Javasctipt.

Criar regras de filtro para marcação

Um exemplo é criar uma série de regras, cada uma delas terá apenas uma ação: "Sufixo ao Assunto", mas as palavras com sufixo identificarão qual é o resultado obtido. Por exemplo, classifique os e-mails de acordo com a sua origem, com o sufixo das palavras "empresa-A", "empresa-B", ..., etc. Lembre-se de que essas palavras "empresa-A", "empresa-B" etc. ., será concatenado no campo de cabeçalho "mykeywords".

Coloque essas regras no início da lista de regras de filtro.

Criar regras de filtro para modificação lógica

Na caixa suspensa do campo de cabeçalho das regras de filtro, use "Personalizar" para adicionar "mykeywords" à lista. Em seguida, escolha "mykeywords contains company-" para a condição na caixa de diálogo do filtro.

Escolha "Ação Javascript" na seção de ação. Adicione um código como este:

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

Nesse ponto, todos os resultados da marcação podem ser acessados ​​pelo script no campo de cabeçalho "mykeywords". Apenas analise a sequência e qualquer lógica poderá ser aplicada após a análise para obter o resultado lógico desejado. Por exemplo, você pode aplicar se "A" e "B", adicionar "result-AB" a "mykeywords", etc. Em seguida, na próxima etapa, marque "mykeywords contém result-AB" para realmente significar "A e B "

O exemplo acima também mostra que o "[VN IGNORE]" pode ser anexado à linha de assunto para indicar quais das três empresas foram envolvidas no email do assunto.

Criar regras de filtro para ação

Agora crie a regra de ação com base nos valores contidos em "mykeywords". Essas serão apenas as configurações normais.

Notas:

O FiltaQuilla suporta javascripts na seção de condição. Portanto, se você não quiser alterar o código fonte da extensão, precisará escrever um pouco mais de código na seção de condições da caixa de diálogo do filtro. Com esse código, qualquer cálculo lógico também pode ser feito.

Confira o site FiltaQuilla para obter mais informações.

minghua
fonte
1

Talvez você possa usar tags para cada sub-cláusula da expressão. if ((from: Tommy OR from: Billy), em seguida, marque a tag "TomAndBilly". Em seguida, filtre procurando por não assunto: Fwd AND marque TomAndBilly. Eu não tentei isso, acho que não funcionará se a TB não filtrar mais de uma vez.Talvez você também possa forçá-lo a ir mais de uma vez, devolvendo o e-mail para pastas diferentes ou até para contas (mas depois está ficando realmente feio).

Ouvi dizer que uma marcação melhor deveria ocorrer no TB3, mas não parece evidente na interface do usuário.

Sam Brightman
fonte