Thunderbird의 메시지 필터에서 필터 규칙을 결합하여 고급 필터 기준을 만드는 방법은 무엇입니까?


13

썬더 버드에서 일 중 하나를 선택할 수 있습니다 일치에게 다음의 모든 또는 일치 다음의 필터 규칙의 주어진 세트를. 혼합하는 방법은 없습니다 ORAND 논리 연산자 자유롭게 ((A와 B) 또는 (C와 D))와 E. 같이 더 복잡한 조건을 만들 수
있는 플러그인이 이상 달성 할 수 있는가가?

답변:


5

한 사람에게서 나오는 여러 가지 주제를 필터링해야했기 때문에 내 해결책은 다음과 같습니다.

  1. 다음 중 하나와 일치하는 필터를 추가하고 원하는 주제를 추가했습니다.
  2. 내가 수행하도록 설정 한 작업은 우선 순위를 가장 낮게 설정하는 것입니다.
  3. 그런 다음 우선 순위가 가장 낮고 포함 (필터링하려는 전자 메일 주소)이 모두 일치하도록 새 필터를 추가했습니다.
  4. 내가 설정 한 작업은 특정 폴더로 이동하는 것이 었습니다.

확인해야 할 한 가지는 첫 번째 파일러가 목록에서 더 높아서 먼저 수행된다는 것입니다. 나는 그것이 가장 우아한 해결책은 아니지만 당신의 요구에 맞게 확장 될 수 있다는 것을 알고 있습니다.


3

이 작업을 수행하는 데 도움이되는 확장명을 찾을 수 없지만 빠른 검색 도구 모음은 단일 폴더를 검색하는 경우에도 작동합니다.

예를 들어-Tommy와 Billy의 모든 메시지에 대한 기준을 만들고 주제에 Fwd가 아닌 메시지와 전달을 포함하여 Sandra의 메시지에 대한 기준을 만들려면 검색을 설정합니다 (빠른 검색 도구 모음을 사용하여 검색하도록 설정) 식으로) :

((보낸 사람 : Tommy OR from : 빌리) AND-제목 : Fwd) OR (보낸 사람 : 산드라)

그러나 폴더가 여러 개인 경우에는 불가능합니다.

제이


좋은 말입니다. 필터 규칙 모듈에서는이 기능을 사용할 수 없습니다.
Piotr Dobrogost

2

FiltaQuilla 및 일부 자바 스크립트 작업 / 규칙을 사용하면 가능합니다. 그러나 여기서는 프로세스를 단순화하기 위해 FiltaQuilla 소스를 약간 수정 한 예입니다.

여기의 예는 3 단계의 필터링을 수행합니다. 표시-이메일 만 분류합니다. 그런 다음 수정-논리적 계산을 수행하고 이메일 제목 또는 헤더를 수정합니다. 그리고 행동-실제 행동을합니다. 각 단계에는 일반적으로 Thunderbird 필터 대화 상자에서 필터를 편집해야하지만 FiltaQuilla에 의해 추가 된 옵션이 있습니다. 1 단계와 2 단계는 결과를 새로 추가 된 이메일 헤더 필드에 저장하고 2 단계와 3 단계는 필드의 결과를 사용하여 정상적인 조치 전에 일부 논리를 수행합니다.

단계 :

FiltaQuilla 설치

많은 기능이 Thunderbird 3.1에서만 작동하는 것 같습니다. 따라서 먼저 TB 3.1로 업그레이드하십시오. 그런 다음 FiltaQuilla를 설치하십시오.

FiltaQuilla 환경 설정 탭에서 "대상 접미사"및 "자바 스크립트 동작"을 활성화하십시오.

FiltaQuilla 소스 수정

확장 디렉토리에서 "filtaquilla@mesquilla.com/content/filtaquilla.js"를 다음과 같이 편집하십시오.

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

이 코드는 접미사 문자열을 "mykeywords"라는 새 헤더에 추가하도록 "Suffix to Subject"의 원래 작업을 변경합니다. 이 새로운 헤더 필드는 문자열 단어의 형태로 필터링의 처음 두 단계에서 결과를 유지하는 데 사용됩니다.

이 소스 코드 변경은 일반적으로 제목에 접미사가 유용하지 않기 때문에 "접미사"조치를 재사용하는 것입니다. 따라서 내부 내장을 재사용해도 FiltaQuilla의 유용성에는 큰 영향을 미치지 않습니다. 그렇지 않으면 공식 기능 요청을 FiltaQuilla 작성자에게 게시하여 원하는 기능을 추가하거나 필터 조건에서 Javasctipt 조건으로 Javascript 코드를 조금 더 작성해야합니다.

표시를위한 필터 규칙 작성

예를 들어, 일련의 규칙을 작성하여 각각 하나의 조치 ( "접미사에서 주제로") 만 갖지만 접미사로 된 단어는 각각 결과가 무엇인지 식별합니다. 예를 들어, "company-A", "company-B"등의 접미사를 붙여 전자 메일을 보낸 위치에 따라 분류합니다. "company-A", "company-B"등의 단어를 기억하십시오. , "mykeywords"헤더 필드에 연결됩니다.

이 규칙을 필터 규칙 목록의 시작 부분에 배치하십시오.

논리적 수정을위한 필터 규칙 만들기

필터 규칙 헤더 필드 드롭 상자에서 "사용자 정의"를 사용하여 "mykeywords"를 목록에 추가하십시오. 그런 다음 필터 대화 상자에서 조건에 대해 "mykeywords contains company-"를 선택하십시오.

작업 섹션에서 "자바 스크립트 작업"을 선택하십시오. 다음과 같은 코드를 추가하십시오.

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

이 시점에서 스크립트는 "mykeywords"헤더 필드에서 모든 마킹 결과에 액세스 할 수 있습니다. 문자열을 구문 분석하면 구문 분석 후에 원하는 논리 결과를 얻기 위해 모든 논리를 적용 할 수 있습니다. 예를 들어, "A"및 "B"인 경우 "result-AB"를 "mykeywords"에 추가하는 등의 작업을 수행 할 수 있습니다. 그런 다음 다음 단계에서 "mykeywords contains result-AB"를 확인하여 "A 및 B ".

위의 예는 또한 "[VN IGNORE]"를 제목 줄 앞에 추가하여 세 회사 중 어느 회사가 제목 전자 메일에 참여했는지를 나타냅니다.

조치를위한 필터 규칙 작성

이제 "mykeywords"에 포함 된 값을 기반으로 조치 규칙을 작성하십시오. 이것은 단지 정상적인 설정입니다.

노트:

FiltaQuilla는 조건 섹션에서 자바 스크립트를 지원합니다. 따라서 확장 소스 코드를 변경하지 않으려면 필터 대화 상자의 조건 섹션에 약간 더 많은 코드를 작성해야합니다. 이 코드를 사용하면 모든 논리 계산도 수행 할 수 있습니다.

자세한 내용은 FiltaQuilla 사이트를 확인하십시오.


1

표현식의 각 하위 절에 태그를 사용할 수 있습니다. if ((from : Tommy OR from : Billy) 그런 다음 "TomAndBilly"태그로 태그를 지정하십시오. 그런 다음 필터를 사용하여 제목을 찾지 마십시오 : Fwd AND 태그 TomAndBilly. 메일을 다른 폴더 나 계정으로 수신 거부하여 메일을 한 번 이상 수신하도록 강요 할 수도 있습니다 (그러나 실제로는 추악 해지기 시작합니다 ).

TB3에서 더 나은 태그 지정이 필요하다고 들었지만 UI에서는 명확하지 않은 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.