FiltaQuilla, और कुछ जावास्क्रिप्ट कार्यों / नियमों के साथ, यह उल्लेखनीय है। हालाँकि, यहाँ यह कुछ उदाहरणों के साथ फिल्टेकविला स्रोत का एक उदाहरण है ताकि प्रक्रिया को सरल बनाया जा सके।
यहां उदाहरण फ़िल्टरिंग के तीन चरण करेगा: अंकन - जो केवल ईमेल को वर्गीकृत करता है। फिर, संशोधन - जो कुछ तार्किक गणना करता है और ईमेल विषय या हेडर को संशोधित करता है। और, क्रिया - वास्तविक क्रिया करना। प्रत्येक चरण में थंडरबर्ड फिल्टर संवाद में संपादन फिल्टर शामिल होंगे, लेकिन FiltaQuilla द्वारा अतिरिक्त विकल्पों के साथ। चरण 1 और 2 एक नए जोड़े गए ईमेल हेडर फ़ील्ड में अपने परिणाम सहेजते हैं, और चरण 2 और 3 सामान्य क्रियाओं से पहले कुछ तर्क करने के लिए फ़ील्ड में परिणामों का उपयोग करते हैं।
कदम:
FiltaQuilla स्थापित करें
ऐसा लगता है कि कई कार्य केवल थंडरबर्ड 3.1 के साथ काम कर रहे हैं। इस प्रकार पहले टीबी 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" नामक एक नए हेडर में प्रत्यय के तार जोड़ देगा। इस नए हेडर फ़ील्ड का उपयोग स्ट्रिंग शब्दों के रूपों में फ़िल्टरिंग के पहले दो चरणों से परिणाम रखने के लिए किया जाएगा।
यह स्रोत कोड परिवर्तन "प्रत्यय" कार्रवाई का पुन: उपयोग करना है क्योंकि आमतौर पर किसी विषय पर प्रत्यय देना बहुत उपयोगी नहीं होता है। इस प्रकार अपनी आंतरिक हिम्मत का पुन: उपयोग करने से FiltaQuilla की उपयोगिता बहुत प्रभावित नहीं होगी। यदि ऐसा नहीं कर रहे हैं, तो फिल्क्विला निर्माता के लिए एक आधिकारिक सुविधा अनुरोध पोस्ट किया जाना चाहिए जिसे आप चाहते हैं कि सुविधा को जोड़ने के लिए, या आपको जावास्क्रिप्ट स्थिति के रूप में फ़िल्टर स्थिति में थोड़ा और जावास्क्रिप्ट कोड लिखना होगा।
मार्किंग के लिए फ़िल्टर नियम बनाएं
एक उदाहरण नियमों की एक श्रृंखला बनाना है प्रत्येक में केवल एक कार्रवाई होगी: "प्रत्यय से विषय", लेकिन प्रत्यय वाले शब्द प्रत्येक को पहचानेंगे कि इसका परिणाम क्या निकला है। उदाहरण के लिए, ईमेल को वर्गीकृत करें जहां वे "कंपनी-ए", "कंपनी-बी", ..., इत्यादि शब्दों के आधार पर याद रखें कि ये शब्द "कंपनी-ए", "कंपनी-बी", आदि। ।, "mykeywords" हेडर फ़ील्ड में सम्मिलित किया जाएगा।
इन नियमों को फ़िल्टर नियम सूची की शुरुआत में रखें।
तार्किक संशोधन के लिए फ़िल्टर नियम बनाएं
फ़िल्टर नियम शीर्ष लेख-फ़ील्ड ड्रॉप बॉक्स में, "mykeywords" को सूची में जोड़ने के लिए "अनुकूलित करें" का उपयोग करें। फिर फ़िल्टर डायलॉग में "mykeywords में कंपनी-" चुनें।
कार्रवाई अनुभाग में "जावास्क्रिप्ट एक्शन" चुनें। इस तरह कुछ कोड जोड़ें:
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" हेडर फ़ील्ड से स्क्रिप्ट द्वारा एक्सेस किए जा सकते हैं। बस स्ट्रिंग को पार्स करें, फिर आपके द्वारा पसंद किए गए तर्क परिणाम को प्राप्त करने के लिए पार्स करने के बाद किसी भी तर्क को लागू किया जा सकता है। उदाहरण के लिए, यदि आप "ए" और "बी" लागू कर सकते हैं, तो "परिणाम-एबी" को "mykeywords" आदि में जोड़ें, फिर अगले चरण में "ए और बी के लिए" mykeywords में परिणाम-एबी "की जाँच करें। "।
उपरोक्त उदाहरण से यह भी पता चलता है कि "[VN IGNORE]" को विषय रेखा से पहले संकेत दिया जा सकता है कि यह इंगित करने के लिए कि कौन सी तीन कंपनियां विषय ईमेल में शामिल हैं।
कार्रवाई के लिए फ़िल्टर नियम बनाएं
अब "mykeywords" में निहित मूल्यों के आधार पर कार्रवाई नियम बनाएं। यह सिर्फ सामान्य सेटिंग्स होगी।
टिप्पणियाँ:
FiltaQuilla हालत अनुभाग में javascripts का समर्थन करता है। इस प्रकार यदि आप एक्सटेंशन सोर्स कोड नहीं बदलना चाहते हैं, तो आपको फ़िल्टर डायलॉग के कंडीशन सेक्शन में थोड़ा और कोड लिखना होगा। उस कोड के साथ कोई भी तर्क संगणना भी की जा सकती है।
अधिक जानकारी के लिए FiltaQuilla साइट देखें।