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

13

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

    
por Piotr Dobrogost 05.10.2009 / 14:11

4 respostas

5

Eu precisava filtrar um monte de assuntos diferentes vindos de uma pessoa, então minha solução foi esta:

  1. Adicionou um filtro para corresponder a qualquer um dos itens a seguir e adicionou qualquer um dos assuntos desejados.
  2. A ação que defini para executar é definir a prioridade como a mais baixa.
  3. Então, adicionei um novo filtro para corresponder a todos os itens a seguir: a prioridade é menor e a partir de contém (o endereço de e-mail do qual eu quis filtrar).
  4. A ação que defini foi passar para uma determinada pasta.

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

    
por 30.12.2010 / 17:09
3

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

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

((de: Tommy OU de: Billy) E -subject: Fwd) OR (de: Sandra)

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

J

    
por 05.10.2009 / 20:18
2

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

O exemplo aqui fará três etapas de filtragem: marcação - que classifica apenas os e-mails. Em seguida, modificando - isso faz alguma computação lógica e modifica o assunto ou cabeçalhos do email. E, ação - fazendo a ação real. Cada um dos estágios envolverá a edição de filtros no diálogo de filtro do Thunderbird normalmente, mas com opções adicionais do 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.

Etapas:

Instalar o FiltaQuilla

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

Na guia de preferência FiltaQuilla, ative "Sufixo para Assunto" e "Ação Javascript".

Modificar a Fonte 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 "Suffix to Subject" para adicionar as sequências com sufixo a um novo cabeçalho chamado "mykeywords". Esse novo campo de cabeçalho será usado para manter o resultado dos dois primeiros estágios de filtragem nas formas de palavras de string.

Esta alteração do código-fonte é reutilizar a ação "Sufixo", pois normalmente o sufixo para um assunto não é muito útil. Assim, reutilizar suas entranhas internas não afetaria muito a usabilidade do FiltaQuilla. Se não estiver fazendo isso, uma solicitação de recurso oficial deve ser enviada ao criador do FiltaQuilla para adicionar o recurso desejado ou você precisará escrever um pouco mais de código Javascript na condição de filtro como condição 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 para Assunto", mas as palavras com sufixo identificarão cada um o resultado obtido. Por exemplo, classifique os emails de acordo com o local de origem das palavras com sufixo "company-A", "company-B", ..., etc. Lembre-se de que essas palavras "company-A", "company-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 de campo de cabeçalho de regras de filtro, use "Personalizar" para adicionar "mykeywords" à lista. Em seguida, escolha "mykeywords contains company-" para condição na caixa de diálogo de 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; */

Neste ponto, todos os resultados da marcação podem ser acessados pelo script do campo de cabeçalho "mykeywords". Apenas analise a string, então qualquer lógica pode 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. Então, na próxima etapa, verificar "mykeywords contém resultado-AB" para o significado real de "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 estiveram 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". Isso será apenas configurações normais.

Notas:

O FiltaQuilla suporta javascripts na seção de condições. Assim, 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ção da caixa de diálogo do filtro. Com esse código, qualquer cálculo lógico pode ser feito também.

Confira o site FiltaQuilla para mais informações.

    
por 15.03.2011 / 03:45
1

Talvez você possa usar tags para cada subcláusula da expressão. if ((de: Tommy OR de: Billy) então marque com a tag "TomAndBilly" .Em seguida, filtre procurando não assunto: FWD AND tag TomAndBilly. Eu não tentei isso, eu acho que não vai funcionar se TB não filtrar mais de uma vez.Talvez você também possa forçá-lo a ir mais de uma vez, enviando as mensagens para pastas diferentes, ou até mesmo para contas (mas, em seguida, está começando a ficar realmente feio).

Ouvi dizer que a marcação melhor foi em TB3, mas não parece evidente na interface do usuário.

    
por 27.09.2010 / 07:25