Làm cách nào để kết hợp các quy tắc bộ lọc trong các bộ lọc thư trong Thunderbird để tạo các tiêu chí lọc nâng cao hơn?


13

Trong Thunderbird, người ta có thể chọn Kết hợp tất cả các mục sau hoặc Kết hợp bất kỳ nội dung nào sau đây cho một bộ quy tắc bộ lọc nhất định. Không có cách nào để trộn các toán tử ORAND một cách tự do để tạo ra các tiêu chí phức tạp hơn như ((A VÀ B) HOẶC (C VÀ D)) VÀ E.
Có bất kỳ trình cắm nào cho phép đạt được các điều trên không?

Câu trả lời:


5

Tôi cần lọc một loạt các đối tượng khác nhau đến từ một người, vì vậy giải pháp của tôi là:

  1. Đã thêm bộ lọc để khớp với bất kỳ mục nào sau đây và thêm bất kỳ đối tượng nào tôi muốn.
  2. Hành động tôi đặt để thực hiện là đặt mức độ ưu tiên xuống thấp nhất.
  3. Sau đó, tôi đã thêm một bộ lọc mới để phù hợp với tất cả những điều sau đây: mức độ ưu tiên là thấp nhất và từ chứa (địa chỉ email tôi muốn lọc từ đó).
  4. Hành động tôi đặt là di chuyển đến một thư mục nhất định.

Một điều bạn cần chắc chắn là trình quay đầu tiên cao hơn trong danh sách để nó được thực hiện trước. Tôi biết đó không phải là giải pháp tao nhã nhất nhưng nó có thể được mở rộng để phù hợp với nhu cầu của bạn.


3

Tôi dường như không thể tìm thấy một tiện ích mở rộng tốt để làm điều này, nhưng thanh công cụ tìm kiếm nhanh cũng sẽ hoạt động tốt nếu bạn chỉ tìm kiếm trên một thư mục.

Chẳng hạn - nếu tôi muốn tạo tiêu chí cho tất cả các tin nhắn từ Tommy và Billy chứ không phải những người có Fwd trong chủ đề, cũng như các tin nhắn từ Sandra kể cả về phía trước, tôi sẽ thiết lập một tìm kiếm (sử dụng thanh công cụ tìm kiếm nhanh được đặt để tìm kiếm theo biểu thức):

((từ: Tommy HOẶC từ: Billy) VÀ -subject: Fwd) HOẶC (từ: Sandra)

Tuy nhiên, với nhiều thư mục, điều này là không thể.

J


Nhận xét tốt đẹp. Thật đáng tiếc tính năng này không có sẵn trong mô-đun quy tắc bộ lọc.
Piotr Dobrogost

2

Với FilteraQuilla và một số hành động / quy tắc javascript, có thể thực hiện được. Tuy nhiên, đây là một ví dụ với một số sửa đổi đối với nguồn FilteraQuilla để đơn giản hóa quy trình.

Ví dụ ở đây sẽ thực hiện ba giai đoạn lọc: đánh dấu - chỉ phân loại các email. Sau đó, sửa đổi - đó là một số tính toán logic và sửa đổi chủ đề hoặc tiêu đề email. Và, hành động - làm hành động thực tế. Mỗi giai đoạn sẽ liên quan đến việc chỉnh sửa các bộ lọc trong hộp thoại bộ lọc Thunderbird thông thường, nhưng với các tùy chọn được thêm bởi FilteraQuilla. Giai đoạn 1 và 2 lưu kết quả của họ vào trường tiêu đề email mới được thêm và giai đoạn 2 và 3 sử dụng kết quả trong trường để thực hiện một số logic trước các hành động bình thường.

Các bước:

Cài đặt FilteraQuilla

Có vẻ như nhiều chức năng chỉ hoạt động với Thunderbird 3.1. Do đó, nâng cấp lên TB 3.1 trước. Sau đó cài đặt FilteraQuilla.

Trong tab tùy chọn FilteraQuilla, bật "Hậu tố cho chủ đề" và "Hành động Javascript".

Sửa đổi nguồn FilteraQuilla

Chỉnh sửa "filtaquilla@mesquilla.com/content/filtaquilla.js" trong thư mục tiện ích mở rộng để nó trông như thế này:

// 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);
    }
  },

Mã này thay đổi hành động ban đầu của "Hậu tố thành chủ đề" thành nó sẽ thêm các chuỗi hậu tố vào một tiêu đề mới có tên là "mykeywords". Trường tiêu đề mới này sẽ được sử dụng để giữ kết quả từ hai giai đoạn lọc đầu tiên dưới dạng các từ chuỗi.

Thay đổi mã nguồn này là để sử dụng lại hành động "Hậu tố" vì thông thường việc nhập vào một chủ đề không hữu ích lắm. Do đó, việc sử dụng lại nội bộ của nó sẽ không ảnh hưởng đến khả năng sử dụng của FilteraQuilla rất nhiều. Nếu không thực hiện điều này, một yêu cầu tính năng chính thức sẽ được đăng lên người tạo FilteraQuilla để thêm tính năng bạn muốn hoặc bạn sẽ cần viết thêm một chút mã Javascript trong điều kiện bộ lọc dưới dạng điều kiện Javasctipt.

Tạo quy tắc lọc để đánh dấu

Một ví dụ là tạo ra một loạt các quy tắc, mỗi quy tắc sẽ chỉ có một hành động: "Hậu tố cho chủ đề", nhưng mỗi từ có hậu tố sẽ xác định kết quả mà nó đạt được. Ví dụ: phân loại các email theo nguồn gốc của chúng bằng cách thêm các từ "company-A", "company-B", ..., v.v ... Hãy nhớ rằng những từ này "company-A", "company-B", v.v. ., sẽ được nối vào trường tiêu đề "mykeywords".

Đặt các quy tắc này vào đầu danh sách quy tắc bộ lọc.

Tạo quy tắc lọc cho sửa đổi hợp lý

Trong hộp thả xuống tiêu đề trường quy tắc bộ lọc, sử dụng "Tùy chỉnh" để thêm "mykeywords" vào danh sách. Sau đó chọn "mykeywords chứa company-" cho điều kiện trong hộp thoại bộ lọc.

Chọn "Hành động Javascript" trong phần hành động. Thêm một số mã như thế này:

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; */

Tại thời điểm này, tất cả các kết quả đánh dấu có thể được truy cập bởi tập lệnh từ trường tiêu đề "mykeywords". Chỉ cần phân tích chuỗi, sau đó bất kỳ logic nào có thể được áp dụng sau khi phân tích cú pháp để đạt được kết quả logic mà bạn muốn. Ví dụ: bạn có thể áp dụng nếu "A" và "B", thêm "result-AB" vào "mykeywords", v.v. Sau đó, trong giai đoạn tiếp theo để kiểm tra "mykeywords chứa result-AB" có nghĩa thực sự cho "A và B ".

Ví dụ trên cũng cho thấy "[VN IGNORE]" có thể được thêm vào dòng tiêu đề để cho biết công ty nào trong ba công ty đã tham gia vào email chủ đề.

Tạo quy tắc lọc cho hành động

Bây giờ hãy tạo quy tắc hành động dựa trên các giá trị có trong "mykeywords". Đây sẽ chỉ là cài đặt bình thường.

Ghi chú:

FilteraQuilla hỗ trợ javascripts trong phần điều kiện. Do đó, nếu bạn không muốn thay đổi mã nguồn mở rộng, bạn sẽ cần viết thêm một chút mã trong phần điều kiện của hộp thoại bộ lọc. Với mã đó, bất kỳ tính toán logic nào cũng có thể được thực hiện.

Kiểm tra trang web FilteraQuilla để biết thêm thông tin.


1

Có lẽ bạn có thể sử dụng các thẻ cho mỗi mệnh đề phụ của biểu thức. if ((từ: Tommy OR từ: Billy) sau đó gắn thẻ với thẻ "TomAndBilly". Sau đó, bộ lọc tìm kiếm không phải chủ đề: Fwd VÀ tag TomAndBilly. lọc nhiều lần. Có lẽ bạn cũng có thể buộc nó phải đi nhiều lần bằng cách chuyển thư đến các thư mục khác nhau hoặc thậm chí các tài khoản (nhưng sau đó nó bắt đầu trở nên thực sự xấu xí).

Tôi nghe nói việc gắn thẻ tốt hơn là do TB3, nhưng dường như không rõ ràng trong giao diện người dùng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.