Bagaimana cara menggabungkan aturan filter dalam filter pesan di Thunderbird untuk membuat kriteria filter yang lebih maju?

13

Di Thunderbird, seseorang dapat memilih Cocokkan semua yang berikut atau Cocokkan salah satu dari yang berikut ini untuk serangkaian aturan filter yang diberikan. Tidak ada cara untuk mencampur OR dan AND operator logis secara bebas untuk membuat kriteria yang lebih kompleks seperti ((A DAN B) ATAU (C DAN D)) DAN E.
Apakah ada plug-in yang memungkinkan untuk mencapai hal di atas?

Piotr Dobrogost
sumber

Jawaban:

5

Saya perlu memfilter sekelompok subjek berbeda yang berasal dari satu orang, jadi solusi saya adalah ini:

  1. Menambahkan filter untuk mencocokkan salah satu dari yang berikut ini, dan menambahkan salah satu subjek yang saya inginkan.
  2. Tindakan yang saya atur untuk dilakukan adalah mengatur prioritas ke terendah.
  3. Lalu saya menambahkan filter baru untuk mencocokkan semua hal berikut: prioritas adalah yang terendah, dan dari berisi (alamat email yang saya ingin filter dari).
  4. Tindakan yang saya tetapkan adalah pindah ke folder tertentu.

Satu hal yang perlu Anda pastikan adalah bahwa filer pertama lebih tinggi pada daftar sehingga dilakukan terlebih dahulu. Saya tahu ini bukan solusi yang paling elegan tetapi dapat diperluas sesuai dengan kebutuhan Anda.

Malaikat Delgado
sumber
3

Sepertinya saya tidak dapat menemukan ekstensi yang bagus untuk melakukan ini, tetapi bilah alat pencarian cepat akan berfungsi dengan baik jika Anda hanya mencari di satu folder.

Misalnya - jika saya ingin membuat kriteria untuk semua pesan dari Tommy dan Billy tetapi tidak yang dengan Fwd di subjek, serta pesan dari Sandra termasuk ke depan saya akan mengatur pencarian (menggunakan toolbar pencarian cepat dengan itu diatur untuk mencari dengan ekspresi):

((dari: Tommy ATAU dari: Billy) DAN -subjek: Fwd) ATAU (dari: Sandra)

Namun, dengan beberapa folder, ini tidak mungkin.

J

JDB
sumber
Komentar yang bagus. Sayang sekali fitur ini tidak tersedia dalam modul aturan filter.
Piotr Dobrogost
2

Dengan FiltaQuilla, dan beberapa tindakan / aturan javascript, itu bisa dilakukan. Namun, ini adalah contoh dengan beberapa modifikasi pada sumber FiltaQuilla untuk mempermudah proses.

Contoh di sini akan melakukan tiga tahap penyaringan: penandaan - yang hanya mengklasifikasikan email. Kemudian, modifikasi - yang melakukan perhitungan logis dan memodifikasi subjek atau header email. Dan, tindakan - melakukan tindakan yang sebenarnya. Setiap tahap akan melibatkan filter pengeditan dalam dialog filter Thunderbird secara normal, tetapi dengan opsi tambahan oleh FiltaQuilla. Tahap 1 dan 2 menyimpan hasil mereka di bidang tajuk email yang baru ditambahkan, dan tahap 2 dan 3 menggunakan hasil di bidang untuk melakukan beberapa logika sebelum tindakan normal.

Langkah:

Instal FiltaQuilla

Sepertinya banyak fungsi yang hanya bekerja dengan Thunderbird 3.1. Jadi tingkatkan ke TB 3.1 terlebih dahulu. Kemudian instal FiltaQuilla.

Di tab preferensi FiltaQuilla, aktifkan "Suffix to Subject", dan "Javascript Action".

Ubah Sumber FiltaQuilla

Edit "[email protected]/content/filtaquilla.js" di direktori ekstensi sehingga terlihat seperti ini:

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

Kode mengubah aksi asli dari "Suffix to Subject" menjadi bahwa ia akan menambahkan string suffixed ke header baru bernama "mykeywords". Bidang tajuk baru ini akan digunakan untuk menjaga hasil dari dua tahap penyaringan pertama dalam bentuk kata-kata string.

Perubahan kode sumber ini adalah untuk menggunakan kembali tindakan "Suffix" karena biasanya suffixing ke subjek tidak terlalu berguna. Dengan demikian menggunakan kembali nyali internalnya tidak akan banyak mempengaruhi kegunaan FiltaQuilla. Jika tidak melakukan ini, permintaan fitur resmi harus dikirim ke pembuat FiltaQuilla untuk menambahkan fitur yang Anda inginkan, atau Anda harus menulis sedikit lebih banyak kode Javascript dalam kondisi filter sebagai kondisi Javasctipt.

Buat Aturan Filter untuk Ditandai

Contohnya adalah membuat serangkaian aturan yang masing-masing hanya akan memiliki satu tindakan: "Suffix to Subject", tetapi kata-kata suffixed masing-masing akan mengidentifikasi apa hasil yang didapat. Misalnya, klasifikasikan email berdasarkan dari mana asalnya dengan kata suffixing "company-A", "company-B", ..., dll. Ingat bahwa kata-kata "company-A", "company-B", dll ., akan digabungkan ke dalam bidang tajuk "mykeywords".

Tempatkan aturan-aturan ini di awal daftar aturan filter.

Buat Aturan Filter untuk Modifikasi Logis

Dalam aturan drop-bidang header-kotak aturan, gunakan "Kustomisasi" untuk menambahkan "mykeywords" ke daftar. Kemudian pilih "mykeywords mengandung perusahaan-" untuk kondisi dalam dialog filter.

Pilih "Aksi Javascript" di bagian tindakan. Tambahkan beberapa kode seperti ini:

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

Pada titik ini, semua hasil penandaan dapat diakses oleh skrip dari bidang header "mykeywords". Cukup parsing string, maka logika apa pun dapat diterapkan setelah parsing untuk mencapai hasil logika yang Anda suka. Misalnya, Anda dapat menerapkan jika "A" dan "B", tambahkan "result-AB" ke "mykeywords", dll. Kemudian pada tahap berikutnya untuk memeriksa "mykeywords mengandung result-AB" untuk arti sebenarnya dari "A dan B ".

Contoh di atas juga menunjukkan bahwa "[VN IGNORE]" dapat ditambahkan ke baris subjek untuk menunjukkan yang mana dari tiga perusahaan yang telah terlibat dalam email subjek.

Buat Aturan Filter untuk Tindakan

Sekarang buat aturan tindakan berdasarkan nilai-nilai yang terkandung dalam "mykeywords". Ini hanya pengaturan normal.

Catatan:

FiltaQuilla mendukung javascripts di bagian kondisi. Jadi, jika Anda tidak ingin mengubah kode sumber ekstensi, Anda harus menulis kode lebih banyak di bagian kondisi dialog filter. Dengan kode itu setiap perhitungan logika dapat dilakukan juga.

Lihat situs FiltaQuilla untuk informasi lebih lanjut.

minghua
sumber
1

Mungkin Anda bisa menggunakan tag untuk setiap sub-klausa ekspresi. jika ((dari: Tommy ATAU dari: Billy) lalu beri tag dengan tag "TomAndBilly". Kemudian filter mencari bukan subjek: Fwd DAN tag TomAndBilly. Saya belum mencoba ini, saya kira itu tidak akan berhasil jika TB tidak akan memfilter lebih dari sekali. Mungkin Anda juga bisa memaksanya untuk pergi lebih dari sekali dengan memantulkan email ke folder yang berbeda, atau bahkan akun (tapi kemudian mulai menjadi sangat jelek).

Saya mendengar bahwa pemberian tag yang lebih baik adalah karena TB3, tetapi tampaknya tidak terlihat di UI.

Sam Brightman
sumber