Penyaringan Email IMAP - Metode, Kriteria & Contoh Kode

Penyaringan Pesan Dasar

The ImapClient class menyediakan ListMessages() metode yang mengambil semua pesan dari kotak surat. Untuk hanya mendapatkan pesan yang cocok dengan beberapa kondisi, gunakan overload ListMessages() metode yang mengambil MailQuery sebagai argumen. The MailQuery kelas menyediakan berbagai properti untuk menentukan kondisi, misalnya tanggal, subjek, pengirim, penerima, dll. Contoh pertama mengilustrasikan cara memfilter pesan berdasarkan tanggal dan subjek. Kami juga menunjukkan cara memfilter berdasarkan kriteria lain dan cara membangun kueri yang lebih kompleks. API juga menyediakan kemampuan untuk menerapkan kriteria pencarian sensitif huruf besar/kecil untuk mencocokkan kriteria filter yang tepat. API juga memungkinkan penentuan encoding string pencarian untuk memfilter pesan dari kotak surat.

Filter Pesan dari Kotak Surat

  1. Hubungkan dan masuk ke server IMAP
  2. Buat sebuah instansi dari MailQuery dan atur properti
  3. Panggil ImapClient.ListMessages(MailQuery query) metode dan melewatkan MailQuery dengan parameter untuk hanya mendapatkan pesan yang difilter.

Potongan kode berikut menunjukkan cara terhubung ke kotak surat IMAP dan mendapatkan pesan yang tiba hari ini serta memiliki kata "newsletter" di subjek.

Filter Pesan berdasarkan Kriteria Spesifik

Contoh kode di atas menyaring pesan berdasarkan subjek email dan tanggal. Kami dapat menggunakan properti lain untuk mengatur kondisi yang didukung lainnya juga. Berikut beberapa contoh pengaturan kondisi menggunakan MailQuery. Potongan kode berikut menunjukkan cara memfilter email pada:

  1. Tanggal hari ini.
  2. Rentang tanggal.
  3. Dari pengirim tertentu.
  4. Dari domain tertentu.
  5. Dari penerima tertentu.

Tanggal Hari Ini

Potongan kode berikut menunjukkan cara memfilter email berdasarkan Tanggal Hari Ini.

Rentang Tanggal

Cuplikan kode berikut menunjukkan cara memfilter email berdasarkan rentang tanggal.

Pengirim Khusus

Potongan kode berikut menunjukkan cara memfilter email berdasarkan pengirim tertentu.

Domain Khusus

Potongan kode berikut menunjukkan cara memfilter email berdasarkan domain tertentu.

Penerima Khusus

Potongan kode berikut menunjukkan cara memfilter email berdasarkan penerima tertentu.

Membangun Kueri Lanjutan

Jika berbeda MailQueryBuilder properti diatur dalam pernyataan terpisah, maka semua kondisi akan cocok. Misalnya, jika kita ingin mendapatkan pesan antara rentang tanggal dan dari host tertentu, kita perlu menulis tiga pernyataan.

Gabungkan Kueri dengan AND

Potongan kode berikut menunjukkan cara menggabungkan kueri dengan AND.

Gabungkan Kueri dengan OR

MailQueryBuilder menyediakan Or() metode yang mengambil dua MailQuery instansi sebagai parameter. Ini mengambil pesan yang cocok dengan salah satu dari dua kondisi yang ditentukan. Potongan kode berikut menunjukkan cara memfilter pesan yang memiliki “test” di subjek atau “noreply@host.com” sebagai pengirim. Potongan kode berikut menunjukkan cara menggabungkan kueri dengan OR.

Penyaringan Berdasarkan InternalDate

Pesan dapat diekstrak dari server berdasarkan InternalDate namun kadang server tidak mengembalikan semua pesan yang terlihat di kotak masuk. Penyebabnya dapat berupa zona waktu server karena mungkin tidak UTC untuk semua server seperti Gmail. Aspose mengirim perintah seperti 008 SEARCH ON 4-May-2014 sesuai dengan protokol IMAP namun hasil dapat berbeda karena pengaturan zona waktu server. Anggota baru ditambahkan dalam ImapMessageInfo sebagai InternalDate yang lebih membantu dalam memfilter pesan. Potongan kode berikut menunjukkan penggunaan InternalDate untuk memfilter pesan.

Penyaringan Sensitif Huruf Besar/Kecil

Potongan kode berikut menunjukkan cara menggunakan penyaringan email yang sensitif huruf besar/kecil.

Tentukan Encoding untuk Pembuat Kueri

API ImapQueryBuilder konstruktor dapat digunakan untuk menentukan Encoding untuk string pencarian. Ini juga dapat diatur menggunakan DefaultEncoding properti dari MailQueryBuilder. Potongan kode berikut menunjukkan cara menentukan encoding untuk pembuat kueri.

Opsi Penyaringan Kustom

Filter Pesan dengan Flag Kustom

Pencarian Kustom untuk Penyaringan

Misalnya, standar RFC 3501 tidak mengizinkan pencarian pesan berdasarkan keberadaan lampiran dalam pesan. Namun Gmail menyediakan Ekstensi IMAP yang memungkinkan melakukan pencarian seperti itu. Cuplikan kode berikut menunjukkan cara membuat kueri yang sesuai.

ImapQueryBuilder queryBuilder = new ImapQueryBuilder();
queryBuilder.CustomSearch("X-GM-RAW \"has:attachment\"");

MailQuery mailQuery = queryBuilder.GetQuery();
ImapMessageInfoCollection messageInfoCollection = imapClient.ListMessages(mailQuery);

Filter Pesan dengan Dukungan Paging

The ImapClient menyediakan kemampuan untuk mencari pesan dari kotak surat dan menyusunnya dengan dukungan paging. Potongan kode berikut menunjukkan cara memfilter pesan dengan dukungan paging.