답변:
실제로 FiltaQuilla로 가능합니다. (FiltaQuilla 1.1.0 사용, Thunderbird 3.1.9 사용).
아래는 FiltaQuilla에서 제공하는 "본문이있는 자바 스크립트 작업"에 적용되는 테스트 스크립트입니다. 오류 콘솔에 모든 헤더 속성과 본문이 표시됩니다.
해당 데이터 필드를 코드에 사용할 수있게되면 메신저 폴더와 메시지를 통과하여 비교해야합니다. hdr에서 "threadParent"속성을 사용하면 로직을 단순화 할 수 있습니다. 힌트는 MDC의 nsIMsgDBHdr을 참조하십시오. 코드에서 추가 속성을 설정할 수 있습니다. 예를 들어, 중복 메시지의 코드에서 "hdr.myvar = '1234'"를 설정 한 후 나중 필터에서 myvar를 1234로 일치시키고 정상적인 조치를 수행하여 삭제하십시오.
이 스크립트는 필터의 동작 부분이므로 필터의 조건 부분은 관심있는 모든 메시지와 일치해야합니다. 이 테스트에서는 스크립트가 메시지를 로컬 폴더에 복사하기위한 조치 후에 배열됩니다.이 폴더는 필요할 수도 있고 필요하지 않을 수도 있지만 IMAP 계정의 로컬 시스템으로 메시지 본문을 다운로드하므로 조치에 본문이 있습니다. 접속하다.
//FiltaQuilla filter action script:
for (let index = 0; index < msgHdrs.length; index++)
{ //get msg hdr:
let hdr = msgHdrs.queryElementAt(index, Ci.nsIMsgDBHdr);
//show subject: get it in two ways
let s = hdr.getStringProperty("subject");
if ( s != undefined && s.length != undefined && s.length > 0)
Cu.reportError(" flt log1: " + s.length + " " + s);
Cu.reportError(" flt log2: " + hdr.subject );
//show all properties of hdr: uncomment to show.
//let e = hdr.propertyEnumerator;
//while ( e.hasMore() ) Cu.reportError(" flt log3: " + e.getNext() );
//get body: from an example on MDC: getMessageBody(aMessageHeader)
//Actions configured in the filter: Without [1], it takes long long time.
// [1] copy msg to a local folder.
// [2] "Javascript Action with Body" with this script.
{ let messenger = Components.classes["@mozilla.org/messenger;1"]
.createInstance(Components.interfaces.nsIMessenger);
let listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"]
.createInstance(Components.interfaces.nsISyncStreamListener);
let uri = hdr.folder.getUriForMsg(hdr);
messenger.messageServiceFromURI(uri)
.streamMessage(uri, listener, null, null, false, "");
let folder = hdr.folder;
let body = folder.getMsgTextFromStream(listener.inputStream,
hdr.Charset, 65536, 32768, false, true, { });
//show body:
Cu.reportError(" flt log4: " + body.length + " " + body);
}
}
아니요, 가능하지 않은 것 같습니다.
이러한 처리는 아마도 procmail , Courier maildrop , amavisd-new 등과 같은 메일 서버에서 수행하는 것이 가장 쉽습니다 .
Amavisd-new는 일반적으로 안티 바이러스 및 안티 스팸 데몬과 같이 배달 전에 메일을 외부 처리 프로그램으로 전달하도록 설계되었습니다.
서버 측에서 할 수 없다면 확장을 작성해야하지만 너무 많은 작업 일 것입니다.
마지막으로 정규 표현식, 외부 프로그램 실행 및 자바 스크립트 작업을 지원 하는 FiltaQuilla 확장 을 사용하여 요구의 상당 부분을 충족시킬 수 있습니다 . 저자의 페이지 에서 더 많은 정보를 찾을 수 있습니다 .
개인적으로, 메일 서버에 액세스 할 수없고 FiltaQuilla가 내 요구를 충족시키지 못하면 ISP에서 메일을 가져 와서 사용자 정의로 전달하기 전에 로컬 Postfix / IMAP 메일 서버를 설정하여 처리하도록 선택했습니다. 스크립트. TB 확장을 작성하는 것보다 훨씬 쉽습니다. 그러나 그것은 당신의 요구에 과잉 일 수 있습니다.
필요한 스크립팅 가능한 필터링 기능이있는 POP3 / IMAP 프록시를 찾을 수 있습니다. Thunderbird와 동일한 PC에서 실행되는 프록시 일 수 있습니다.
확장명 : http://mesquilla.com/extensions/filtaquilla/
실행할 자바 스크립트 및 / 또는 외부 파일을 만들 수 있습니다.