FiltaQuilla ve bazı javascript eylemleri / kuralları ile yapılabilir. Ancak, burada işlemi basitleştirmek için FiltaQuilla kaynağında bazı değişikliklerin yapıldığı bir örnek.
Buradaki örnek, filtrelemenin üç aşamasını gerçekleştirecektir: işaretleme - yalnızca e-postaları sınıflandırır. Ardından, değiştirerek - bu bazı mantıksal hesaplamalar yapar ve e-posta konusunu veya başlıklarını değiştirir. Ve eylem - gerçek eylemi yapmak. Her aşama, Thunderbird filtre iletişim kutusundaki filtreleri normal olarak, ancak FiltaQuilla'nın ek seçenekleriyle düzenlemeyi içerecektir. Aşama 1 ve 2, sonuçlarını yeni eklenen bir e-posta başlığı alanına kaydeder ve aşama 2 ve 3, normal eylemlerden önce bazı mantık yapmak için alandaki sonuçları kullanır.
Adımlar:
FiltaQuilla'yı yükle
Görünüşe göre birçok fonksiyon sadece Thunderbird 3.1 ile çalışıyor. Böylece önce TB 3.1'e yükseltin. Ardından FiltaQuilla'yı yükleyin.
FiltaQuilla tercih sekmesinde, "Konuya Sonek" ve "Javascript Eylemi" ni etkinleştirin.
FiltaQuilla Kaynağını Değiştir
Uzantı dizinindeki "filtaquilla@mesquilla.com/content/filtaquilla.js" dosyasını aşağıdaki gibi görünecek şekilde düzenleyin:
// 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);
}
},
Kod, "Sonek Konuya" özgün eylemi, ekli dizeleri "mykeywords" adlı yeni bir başlığa ekleyeceği şekilde değiştirir. Bu yeni başlık alanı, filtrelemenin ilk iki aşamasındaki sonucu dizgi sözcükleri biçiminde tutmak için kullanılacaktır.
Bu kaynak kodu değişikliği genellikle "Sonek" eylemini yeniden kullanmaktır çünkü bir konuya genellikle sonek eklemek çok yararlı değildir. Bu nedenle iç bağırsaklarını tekrar kullanmak FiltaQuilla'nın kullanılabilirliğini çok fazla etkilemez. Bunu yapmazsanız, istediğiniz özelliği eklemek için FiltaQuilla yaratıcısına resmi bir özellik isteği gönderilmelidir veya filtre koşulunda Javasctipt koşulu olarak biraz daha Javascript kodu yazmanız gerekir.
İşaretleme için Filtre Kuralları Oluşturma
Bir örnek, her birinin yalnızca bir eylemi olacak bir dizi kural oluşturmaktır: "Özneye Sonek", ancak ekli kelimelerin her biri sonucun ne olduğunu tanımlayacaktır. Örneğin, "şirket-A", "şirket-B", ... vb. Kelimeleri ekleyerek e-postaları bulundukları yere göre sınıflandırın. Bu şirket "şirket-A", "şirket-B" vb. ., "mykeywords" başlık alanına birleştirilecektir.
Bu kuralları filtre kuralları listesinin başına yerleştirin.
Mantıksal Değişiklik için Filtre Kuralları Oluşturma
Filtre kuralları başlık alanı açılır kutusunda, listeye "anahtar kelimelerim" eklemek için "Özelleştir" i kullanın. Ardından, filtre iletişim kutusundaki koşul için "mykeywords şirket içerir" i seçin.
İşlem bölümünde "Javascript İşlemi" ni seçin. Bunun gibi bir kod ekleyin:
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; */
Bu noktada, tüm işaretleme sonuçlarına komut dosyası tarafından "mykeywords" başlık alanından erişilebilir. Sadece dizeyi ayrıştırın, sonra istediğiniz mantık sonucunu elde etmek için ayrıştırmadan sonra herhangi bir mantık uygulanabilir. Örneğin, "A" ve "B" ise, "mykeywords", vb. İçine "sonuç-AB" eklerseniz, vb. ".
Yukarıdaki örnek ayrıca üç şirketin hangisinin söz konusu e-postaya dahil olduğunu belirtmek için "[VN IGNORE]" öğesinin konu satırına eklenebileceğini göstermektedir.
Eylem için Filtre Kuralları Oluşturma
Şimdi "mykeywords" içindeki değerleri temel alarak eylem kuralını oluşturun. Bu sadece normal ayarlar olacaktır.
Notlar:
FiltaQuilla, koşul bölümündeki javascripts'i destekler. Bu nedenle, uzantı kaynak kodunu değiştirmek istemiyorsanız, filtre iletişim kutusunun koşul bölümüne biraz daha kod yazmanız gerekir. Bu kod ile herhangi bir mantık hesaplaması da yapılabilir.
Daha fazla bilgi için FiltaQuilla sitesine göz atın.