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.