¿Cómo combinar reglas de filtro en filtros de mensajes en Thunderbird para crear criterios de filtro más avanzados?

13

En Thunderbird se puede elegir ya sea Coincidir con todos los siguientes o Coincidir cualquiera de los siguientes para un conjunto dado de reglas de filtro. No hay forma de mezclar operadores lógicos OR y AND libremente para crear criterios más complejos como ((A Y B) OR (C AND D)) AND E.
¿Hay algún complemento que permita lograr lo anterior?

Piotr Dobrogost
fuente

Respuestas:

5

Necesitaba filtrar un montón de temas diferentes provenientes de una sola persona, así que mi solución fue esta:

  1. Se agregó un filtro para que coincida con cualquiera de los siguientes, y se agregó cualquiera de los temas que quería.
  2. La acción que configuré para realizar es establecer la prioridad en la más baja.
  3. Luego agregué un nuevo filtro para que coincida con todo lo siguiente: la prioridad es la más baja y desde contiene (la dirección de correo electrónico desde la que quería filtrar).
  4. La acción que establecí fue moverme a una carpeta determinada.

Una cosa de la que debe asegurarse es que el primer archivador esté más arriba en la lista, por lo que se realiza primero. Sé que no es la solución más elegante, pero se puede ampliar para satisfacer sus necesidades.

Angel Delgado
fuente
3

Parece que no puedo encontrar una buena extensión para hacer esto, pero la barra de herramientas de búsqueda rápida funcionaría igual de bien si solo está buscando en una sola carpeta.

Por ejemplo, si quisiera crear criterios para todos los mensajes de Tommy y Billy, pero no para aquellos con Fwd en el asunto, así como los mensajes de Sandra, incluidos los reenvíos, establecería una búsqueda (usando la barra de herramientas de búsqueda rápida con él configurado para buscar por expresión):

((de: Tommy O de: Billy) Y -sujeto: Fwd) O (de: Sandra)

Sin embargo, con varias carpetas, esto no es posible.

J

JDB
fuente
Buen comentario Es una pena que esta característica no esté disponible en el módulo de reglas de filtro.
Piotr Dobrogost
2

Con FiltaQuilla, y algunas acciones / reglas de JavaScript, es factible. Sin embargo, aquí hay un ejemplo con algunas modificaciones en la fuente FiltaQuilla para simplificar el proceso.

El ejemplo aquí hará tres etapas de filtrado: marcado, que solo clasifica los correos electrónicos. Luego, modificando: eso hace un cálculo lógico y modifica el asunto o los encabezados del correo electrónico. Y, acción: hacer la acción real. Cada una de las etapas implicará la edición de filtros en el diálogo de filtro de Thunderbird normalmente, pero con opciones agregadas por FiltaQuilla. Las etapas 1 y 2 guardan sus resultados en un campo de encabezado de correo electrónico agregado recientemente, y las etapas 2 y 3 usan los resultados en el campo para hacer algo de lógica antes de las acciones normales.

Pasos:

Instalar FiltaQuilla

Parece que muchas funciones solo funcionan con Thunderbird 3.1. Por lo tanto, actualice a TB 3.1 primero. Luego instale FiltaQuilla.

En la pestaña de preferencias de FiltaQuilla, habilite "Sufijo al asunto" y "Acción de Javascript".

Modificar fuente FiltaQuilla

Edite "[email protected]/content/filtaquilla.js" en el directorio de extensiones para que se vea así:

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

El código cambia la acción original de "Suffix to Subject" y agrega las cadenas con sufijo en un nuevo encabezado llamado "mykeywords". Este nuevo campo de encabezado se utilizará para mantener el resultado de las dos primeras etapas de filtrado en forma de palabras de cadena.

Este cambio de código fuente es para reutilizar la acción "Sufijo" ya que generalmente el sufijo a un tema no es muy útil. Por lo tanto, reutilizar sus intestinos internos no afectaría mucho la usabilidad de FiltaQuilla. Si no está haciendo esto, se debe publicar una solicitud de función oficial al creador de FiltaQuilla para agregar la función que desee, o deberá escribir un poco más de código Javascript en la condición de filtro como condición de Javasctipt.

Crear reglas de filtro para marcado

Un ejemplo es crear una serie de reglas, cada una de las cuales tendrá una sola acción: "Sufijo al sujeto", pero las palabras con sufijo identificarán cuál es el resultado obtenido. Por ejemplo, clasifique los correos electrónicos de acuerdo a su procedencia con las palabras "empresa-A", "empresa-B", ..., etc. Recuerde que estas palabras "empresa-A", "empresa-B", etc. ., se concatenará en el campo de encabezado "mykeywords".

Coloque estas reglas al comienzo de la lista de reglas de filtro.

Crear reglas de filtro para modificación lógica

En el cuadro desplegable de campo de encabezado de reglas de filtro, use "Personalizar" para agregar "palabras clave" a la lista. Luego elija "mykeywords contiene company-" para la condición en el diálogo de filtro.

Elija "Acción Javascript" en la sección de acción. Agregue un 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; */

En este punto, el script puede acceder a todos los resultados de marcado desde el campo de encabezado "mykeywords". Simplemente analice la cadena, luego se puede aplicar cualquier lógica después del análisis para lograr el resultado lógico que desee. Por ejemplo, puede aplicar si "A" y "B", agregar "result-AB" a "mykeywords", etc. Luego, en la siguiente etapa, marque "mykeywords contiene result-AB" para el significado real de "A y B ".

El ejemplo anterior también muestra que "[VN IGNORE]" puede anteponerse a la línea de asunto para indicar cuál de las tres compañías ha estado involucrada en el asunto del correo electrónico.

Crear reglas de filtro para la acción

Ahora cree la regla de acción basada en los valores contenidos en "mykeywords". Esta será solo la configuración normal.

Notas:

FiltaQuilla admite javascripts en la sección de condición. Por lo tanto, si no desea cambiar el código fuente de la extensión, deberá escribir un poco más de código en la sección de condición del cuadro de diálogo de filtro. Con ese código también se puede hacer cualquier cálculo lógico.

Visite el sitio de FiltaQuilla para obtener más información.

minghua
fuente
1

Tal vez podría usar etiquetas para cada subcláusula de la expresión. if ((de: Tommy OR de: Billy) luego etiquete con la etiqueta "TomAndBilly". Luego filtre buscando no sujeto: Fwd AND etiquete TomAndBilly. No he intentado esto, supongo que no funcionará si TB no filtre más de una vez. Quizás también pueda forzarlo a ir más de una vez haciendo rebotar el correo en diferentes carpetas, o incluso en cuentas (pero luego comienza a ponerse realmente feo).

Escuché que se debía etiquetar mejor en TB3, pero no parece evidente en la interfaz de usuario.

Sam Brightman
fuente