Daha gelişmiş filtre ölçütleri oluşturmak için Thunderbird'deki ileti filtrelerindeki filtre kuralları nasıl birleştirilir?


13

Thunderbird'de , belirli bir filtre kuralı kümesi için aşağıdakilerin tümünü eşleştir veya Aşağıdakilerden herhangi birini eşleştir'i seçebilirsiniz . Karıştırmak için bir yolu yoktur TD ve VE mantık operatörler serbest ((A ve B) veya (C ve D)) ve E. gibi daha karmaşık kriterleri oluşturmak için
herhangi bir plug-in yukarıda elde etmek için izin var mı?

Yanıtlar:


5

Bir kişiden gelen bir dizi farklı konuyu filtrelemem gerekiyordu, bu yüzden benim çözümüm şuydu:

  1. Aşağıdakilerden herhangi birine uygun bir filtre ekledim ve istediğim konulardan herhangi birini ekledim.
  2. Gerçekleştirmek için ayarladığım işlem, önceliği en düşük seviyeye ayarlamak.
  3. Sonra aşağıdakilerin tümünü eşleştirmek için yeni bir filtre ekledim: öncelik en düşük ve içeriyor (filtrelemek istediğim e-posta adresi).
  4. Ayarladığım eylem belirli bir klasöre gitmekti.

Emin olmanız gereken bir şey, ilk disk denetleyicisinin listede daha üst sıralarda yer alması ve bu nedenle önce gerçekleştirilmesidir. En zarif çözüm olmadığını biliyorum, ancak ihtiyaçlarınıza uyacak şekilde genişletilebilir.


3

Bunu yapmak için iyi bir uzantı bulamıyorum, ancak sadece tek bir klasör üzerinde arama yaparsanız hızlı arama araç çubuğu da işlev görür.

Örneğin, Tommy ve Billy'den gelen tüm mesajlar için ölçütler oluşturmak isteseydim, ancak konuyla ilgili Fwd olanlar için değil, Sandra'dan iletiler de dahil olmak üzere iletiler bir arama ayarlardım (arama için ayarlanmış hızlı arama araç çubuğunu kullanarak) ifadeye göre):

((from: Tommy OR from: Billy) VE -aynak: Fwd) VEYA (from: Sandra)

Ancak, birden fazla klasörle bu mümkün değildir.

J


Güzel açıklama. Bu kuralın filtre kuralları modülünde mevcut olmaması üzücü.
Piotr Dobrogost

2

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.


1

Belki ifadenin her bir alt maddesi için etiketleri kullanabilirsiniz. if ((from: Tommy OR from: Billy) sonra "TomAndBilly" etiketi ile etiketleyin. Sonra filtre konu değil arıyor: Fwd AND tag TomAndBilly. Bunu denemedim, sanırım TB olmazsa işe yaramaz Belki de postaları farklı klasörlere ve hatta hesaplara zıplatarak birden fazla kez gitmeye zorlayabilirsiniz (ancak gerçekten çirkinleşmeye başlıyor ).

TB3'te daha iyi etiketlemenin yapıldığını duydum, ancak kullanıcı arayüzünde belirgin görünmüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.