จะรวมกฎตัวกรองในตัวกรองข้อความในธันเดอร์เบิร์ดเพื่อสร้างเกณฑ์ตัวกรองขั้นสูงได้อย่างไร


13

ในธันเดอร์เบิร์ดหนึ่งสามารถเลือกจับคู่ต่อไปนี้ทั้งหมดหรือตรงกับใด ๆ ต่อไปนี้สำหรับชุดของกฎตัวกรองที่กำหนด ไม่มีวิธีใดที่จะผสมตัวดำเนินการเชิงตรรกะORและANDอย่างอิสระเพื่อสร้างเกณฑ์ที่ซับซ้อนมากขึ้นเช่น ((A และ B) หรือ (C และ D)) และ E
มีปลั๊กอินใดบ้างที่อนุญาตให้ทำตามข้างต้นได้หรือไม่

คำตอบ:


5

ฉันต้องการกรองวิชาที่แตกต่างกันมากมายซึ่งมาจากบุคคลหนึ่งดังนั้นทางออกของฉันคือ:

  1. เพิ่มตัวกรองเพื่อให้ตรงกับข้อใดข้อหนึ่งต่อไปนี้และเพิ่มวิชาใด ๆ ที่ฉันต้องการ
  2. การกระทำที่ฉันตั้งไว้เพื่อดำเนินการคือการกำหนดลำดับความสำคัญต่ำสุด
  3. จากนั้นฉันเพิ่มตัวกรองใหม่เพื่อให้ตรงกับสิ่งต่อไปนี้ทั้งหมด: ลำดับความสำคัญต่ำที่สุดและจากมี (ที่อยู่อีเมลที่ฉันต้องการกรองจาก)
  4. การกระทำที่ฉันตั้งไว้คือการย้ายไปยังโฟลเดอร์ที่แน่นอน

สิ่งหนึ่งที่คุณต้องแน่ใจก็คือไฟล์ตัวแรกนั้นสูงกว่าในรายการเพื่อที่จะได้ทำการแสดงก่อน ฉันรู้ว่ามันไม่ใช่ทางออกที่หรูหราที่สุด แต่ก็สามารถขยายได้ตามความต้องการของคุณ


3

ฉันไม่สามารถหาส่วนขยายที่ดีในการทำเช่นนี้ได้ แต่แถบเครื่องมือค้นหาด่วนจะทำงานได้ดีหากคุณกำลังค้นหาโฟลเดอร์เดียว

ตัวอย่างเช่น - ถ้าฉันต้องการสร้างเกณฑ์สำหรับข้อความทั้งหมดจาก Tommy และ Billy แต่ไม่ใช่ผู้ที่มี Fwd ในหัวเรื่องรวมถึงข้อความจาก Sandra รวมถึงการส่งต่อฉันจะตั้งค่าการค้นหา (โดยใช้แถบเครื่องมือค้นหาแบบรวดเร็วพร้อมตั้งค่าให้ค้นหา โดยการแสดงออก):

((จาก: Tommy หรือจาก: Billy) และ -subject: Fwd) หรือ (จาก: Sandra)

อย่างไรก็ตามด้วยหลาย ๆ โฟลเดอร์มันเป็นไปไม่ได้

J


คำพูดที่ดี น่าเสียดายที่ฟีเจอร์นี้ไม่สามารถใช้ได้ในโมดูลกฎตัวกรอง
Piotr Dobrogost

2

ด้วย 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 สำหรับข้อมูลเพิ่มเติม


1

บางทีคุณสามารถใช้แท็กสำหรับแต่ละส่วนย่อยของการแสดงออก ถ้า ((จาก: Tommy หรือจาก: Billy) ให้แท็กด้วยแท็ก "TomAndBilly" จากนั้นตัวกรองที่ค้นหาไม่ใช่หัวเรื่อง: Fwd และแท็ก TomAndBilly ฉันไม่ได้ลองสิ่งนี้ฉันเดาว่ามันจะไม่ทำงานถ้า TB จะไม่ กรองมากกว่าหนึ่งครั้ง. บางทีคุณอาจจะยังสามารถบังคับให้มันไปมากกว่าหนึ่งครั้งโดยตีกลับจดหมายไปยังโฟลเดอร์ที่แตกต่างกันหรือแม้กระทั่งการบัญชี ( แต่แล้วก็เริ่มที่จะได้รับมันน่าเกลียด)

ฉันได้ยินว่าการติดแท็กที่ดีขึ้นนั้นมาจาก TB3 แต่ดูเหมือนจะไม่ปรากฏใน UI

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.