Nif*_*fle 5 thunderbird email-client email-filter
是否可以为 Thunderbird 编写自己的过滤器,我不在乎使用什么语言。
我希望能够对电子邮件(标题和文本)进行全面分析,并根据内容采取某些行动。
如果我能够将当前电子邮件与较早收到的消息进行比较(主要是为了删除重复的日志消息),则奖励积分
实际上,使用 FiltaQuilla 就可以做到。(尝试过 FiltaQuilla 1.1.0 和 Thunderbird 3.1.9)。
下面是 FiltaQuilla 提供的“javascript action with body”下的测试脚本。它确实在错误控制台中显示了所有标头属性和正文。
一旦这些数据字段可供代码使用,它就需要遍历信使文件夹和消息来比较它们。也许在 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);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4733 次 |
最近记录: |