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
- Hubungkan dan masuk ke server IMAP
- Buat sebuah instansi dari MailQuery dan atur properti
- 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:
- Tanggal hari ini.
- Rentang tanggal.
- Dari pengirim tertentu.
- Dari domain tertentu.
- 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.