Answers:
使用FiltaQuilla和一些JavaScript操作/规则,它是可行的。但是,这里是对FiltaQuilla源进行一些修改以简化过程的示例。
此处的示例将执行三个过滤阶段:标记-仅对电子邮件进行分类。然后,进行修改-进行一些逻辑计算并修改电子邮件主题或标头。而且,采取行动-采取实际行动。每个阶段都会正常地在Thunderbird过滤器对话框中编辑过滤器,但FiltaQuilla会添加一些选项。第1阶段和第2阶段将其结果保存在新添加的电子邮件标题字段中,第2阶段和第3阶段使用该字段中的结果在执行常规操作之前执行一些逻辑操作。
看起来许多功能仅适用于Thunderbird 3.1。因此,首先要升级到TB 3.1。然后安装FiltaQuilla。
在FiltaQuilla首选项选项卡中,启用“主题的后缀”和“ Javascript操作”。
在扩展目录中编辑“ 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”的新标题中。这个新的标题字段将用于保留字符串形式的前两个过滤结果。
此源代码更改是为了重用“后缀”操作,因为通常给主题加后缀不是很有用。因此,重用其内部胆量不会对FiltaQuilla的可用性产生很大影响。如果不这样做,则应将正式功能请求发布到FiltaQuilla创建者以添加所需的功能,否则您将需要在过滤条件中编写更多的Javascript代码作为Javasctipt条件。
一个示例是创建一系列规则,每个规则只有一个动作:“主题的后缀”,但是带后缀的单词将分别标识它所获得的结果。例如,通过给单词加上“ company-A”,“ company-B”,...等后缀来对电子邮件进行分类。请记住,这些单词“ company-A”,“ company-B”等。,将被串联到“ mykeywords”标题字段中。
将这些规则放在过滤器规则列表的开头。
在过滤规则标头字段下拉框中,使用“自定义”将“ mykeywords”添加到列表中。然后在过滤器对话框中选择“ mykeywords contains company-”作为条件。
在“操作”部分中选择“ Javascript操作”。添加如下代码:
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”,在“ mykeywords”中添加“ result-AB”,等等。然后在下一阶段中检查“ mykeywords包含result-AB”对于“ A和B”的实际含义”。
上面的示例还显示,可以在主题行之前添加“ [VN IGNORE]”,以指示主题电子邮件中已涉及三个公司中的哪个公司。
现在,基于“ mykeywords”中包含的值创建操作规则。这只是正常设置。
FiltaQuilla在条件部分中支持javascript。因此,如果您不想更改扩展源代码,则需要在过滤器对话框的条件部分中编写更多代码。使用该代码,任何逻辑计算也可以完成。
请访问FiltaQuilla网站以获取更多信息。