ด้วย FiltaQuilla และการกระทำ / กฎจาวาสคริปต์บางอย่างก็สามารถทำได้ อย่างไรก็ตามนี่คือตัวอย่างที่มีการแก้ไขบางอย่างในแหล่ง FiltaQuilla เพื่อทำให้กระบวนการง่ายขึ้น
ตัวอย่างที่นี่จะทำการกรองสามขั้นตอน: การทำเครื่องหมาย - ซึ่งแยกประเภทอีเมลเท่านั้น จากนั้นแก้ไข - ซึ่งจะทำการคำนวณเชิงตรรกะและแก้ไขหัวเรื่องอีเมลหรือส่วนหัว และการกระทำ - ทำสิ่งที่เกิดขึ้นจริง แต่ละขั้นตอนจะเกี่ยวข้องกับการแก้ไขตัวกรองในกล่องโต้ตอบตัวกรอง Thunderbird ตามปกติ แต่ด้วยตัวเลือกที่เพิ่มขึ้นโดย FiltaQuilla ขั้นตอนที่ 1 และ 2 บันทึกผลลัพธ์ในฟิลด์ส่วนหัวของอีเมลที่เพิ่มใหม่และขั้นตอนที่ 2 และ 3 ใช้ผลลัพธ์ในฟิลด์เพื่อทำตรรกะบางอย่างก่อนดำเนินการตามปกติ
ขั้นตอน:
ติดตั้ง FiltaQuilla
ดูเหมือนว่าฟังก์ชั่นหลายอย่างจะทำงานกับ Thunderbird 3.1 เท่านั้น ดังนั้นอัพเกรดเป็น TB 3.1 ก่อน จากนั้นติดตั้ง FiltaQuilla
ในแท็บการกำหนดค่าตามความชอบของ FiltaQuilla ให้เปิดใช้งาน "ส่วนต่อท้ายไปยังหัวเรื่อง" และ "การกระทำของ Javascript"
แก้ไข FiltaQuilla Source
แก้ไข "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" กลับมาใช้ใหม่เนื่องจากโดยทั่วไปแล้วการ suffixing กับหัวเรื่องนั้นไม่มีประโยชน์มาก ดังนั้นการนำความกล้าภายในกลับมาใช้ใหม่จะไม่ส่งผลกระทบต่อการใช้งานของ FiltaQuilla มากนัก หากไม่ทำเช่นนี้คำขอคุณสมบัติอย่างเป็นทางการควรโพสต์ถึงผู้สร้าง FiltaQuilla เพื่อเพิ่มคุณสมบัติที่คุณต้องการหรือคุณจะต้องเขียนโค้ด Javascript อีกเล็กน้อยในเงื่อนไขตัวกรองว่าเป็นเงื่อนไข Javasctipt
สร้างกฎตัวกรองสำหรับการทำเครื่องหมาย
ตัวอย่างคือการสร้างกฎแต่ละชุดจะมีเพียงหนึ่งการกระทำ: "ต่อท้ายเรื่อง" แต่คำต่อท้ายแต่ละคนจะระบุสิ่งที่ผลลัพธ์ได้ ตัวอย่างเช่นจำแนกอีเมลตามที่มาจากคำว่า "company-A", "company-B", ... , ฯลฯ โปรดจำไว้ว่าคำเหล่านี้ "company-A", "company-B" ฯลฯ ., จะถูกตัดแบ่งในฟิลด์ส่วนหัว "mykeywords"
วางกฎเหล่านี้ไปยังจุดเริ่มต้นของรายการกฎตัวกรอง
สร้างกฎตัวกรองสำหรับการแก้ไขแบบลอจิคัล
ในกล่องตัวกรองกฎส่วนหัว - ฟิลด์ให้ใช้ "ปรับแต่ง" เพื่อเพิ่ม "mykeywords" ในรายการ จากนั้นเลือก "mykeywords มี 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" เพิ่ม "result-AB" เป็น "mykeywords" ฯลฯ จากนั้นในขั้นตอนต่อไปเพื่อตรวจสอบ "mykeywords ประกอบด้วย result-AB" สำหรับความหมายจริงสำหรับ "A และ B "
ตัวอย่างข้างต้นยังแสดงให้เห็นว่า "[VN IGNORE]" สามารถนำไปรวมกับหัวเรื่องได้เพื่อระบุว่า บริษัท ใดมีส่วนเกี่ยวข้องในอีเมลหัวเรื่อง
สร้างกฎตัวกรองสำหรับการดำเนินการ
ตอนนี้สร้างกฎการกระทำตามค่าที่มีอยู่ใน "mykeywords" นี่เป็นเพียงการตั้งค่าปกติ
หมายเหตุ:
FiltaQuilla รองรับ javascripts ในส่วนเงื่อนไข ดังนั้นหากคุณไม่ต้องการเปลี่ยนซอร์สโค้ดส่วนขยายคุณจะต้องเขียนโค้ดเพิ่มอีกเล็กน้อยในส่วนเงื่อนไขของกล่องโต้ตอบตัวกรอง ด้วยรหัสนั้นการคำนวณเชิงตรรกะก็สามารถทำได้เช่นกัน
ตรวจสอบเว็บไซต์ FiltaQuilla สำหรับข้อมูลเพิ่มเติม