Bekerja dengan Pesan dari Server

Mendapatkan Informasi Kotak Surat

Kita dapat memperoleh informasi tentang kotak surat seperti jumlah pesan dan ukuran kotak surat menggunakan metode GetMailBoxSize() dan GetMailBoxInfo().

  • Metode GetMailBoxSize() mengembalikan ukuran kotak surat dalam byte.
  • Metode GetMailBoxInfo() mengembalikan objek berjenis Pop3MailBoxInfo.

Juga memungkinkan untuk mendapatkan jumlah pesan menggunakan properti MessageCount dan ukuran menggunakan properti OccupiedSize. Contoh kode berikut menunjukkan cara mendapatkan informasi tentang kotak surat. Ini menunjukkan cara:

  1. Buat sebuah Pop3Client.
  2. Terhubung ke server POP3.
  3. Dapatkan ukuran kotak surat.
  4. Dapatkan info kotak surat.
  5. Dapatkan jumlah pesan dalam kotak surat.
  6. Dapatkan ukuran yang terpakai.

Mendapatkan jumlah email di kotak surat

Potongan kode berikut menunjukkan cara menghitung pesan email dalam kotak surat.

Aspose.Email memungkinkan pengembang bekerja dengan email dalam berbagai cara. Misalnya, mereka dapat mengambil informasi header sebelum memutuskan apakah akan mengunduh email. Atau mereka dapat mengambil email dari server dan menyimpannya tanpa menguraikannya (lebih cepat) atau setelah menguraikannya (lebih lambat). Artikel ini menunjukkan cara mengambil dan mengonversi email.

Mengambil Informasi Header Email

Header email dapat memberi kita informasi tentang pesan email yang dapat kita gunakan untuk memutuskan apakah akan mengambil seluruh pesan email atau tidak. Biasanya, informasi header berisi pengirim, subjek, tanggal diterima, dll. (Header email dijelaskan secara detail di Menyesuaikan Header Email. Topik tersebut khusus tentang mengirim email dengan SMTP, tetapi informasi konten header email tetap berlaku untuk email POP3). Contoh berikut menunjukkan cara mengambil header email dari server POP3 berdasarkan nomor urut pesan.

Mengambil Pesan Email

Komponen kelas Aspose.Email.Pop3 menyediakan kemampuan untuk mengambil pesan email dari server POP3, dan menguraikannya menjadi sebuah instance MailMessage dengan bantuan komponen MailMessage. Kelas MailMessage berisi beberapa properti dan metode untuk memanipulasi konten email. Dengan menggunakan fungsi FetchMessage dari kelas Pop3Client, Anda dapat memperoleh instance MailMessage langsung dari server POP3. Potongan kode berikut menunjukkan cara mengambil pesan email lengkap dari server POP3.

Mengambil Informasi Ringkasan Pesan menggunakan Id Unik

Klien POP3 API dapat mengambil informasi ringkasan pesan dari server menggunakan ID unik pesan. Ini memberikan akses cepat ke informasi singkat pesan tanpa harus terlebih dulu mengambil pesan lengkap dari server. Potongan kode berikut menunjukkan cara mengambil informasi ringkasan pesan.

Mendaftarkan Pesan dengan MultiConnection

Untuk operasi beban berat, Aspose.Email menawarkan properti ‘use_multi_connection’ dari Pop3Client class untuk menggunakan beberapa koneksi saat mengambil email. Namun, penggunaan mode ini tidak selalu meningkatkan kinerja. Potongan kode berikut menunjukkan cara menghubungkan ke server POP3, mengkonfigurasi klien untuk mengizinkan hingga 5 koneksi bersamaan dan mengaktifkan mode multi-koneksi untuk mengambil informasi tentang pesan yang ada di server:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
message_info_coll = client.list_messages()

Mengambil Pesan dari Server dan Menyimpan ke Disk

Simpan Pesan ke Disk tanpa Mengurai

Jika Anda ingin mengunduh pesan email dari server POP3 tanpa mengurai mereka, gunakan fungsi SaveMessage dari kelas Pop3Client. Fungsi SaveMessage tidak mengurai pesan email sehingga lebih cepat dibandingkan fungsi FetchMessage. Potongan kode berikut menunjukkan cara menyimpan pesan berdasarkan nomor urutnya, dalam kasus ini nomor 1. Metode SaveMessage menyimpan pesan dalam format EML asli tanpa menguraikannya.

Mengurai Pesan Sebelum Menyimpan

Gunakan metode ‘fetch_message’ dari objek klien yang dibuat menggunakan Pop3Client class untuk mengambil pesan dengan nomor urut tertentu. Contoh kode di bawah ini menunjukkan cara mengambil pesan tertentu dan menyimpannya menggunakan subjeknya sebagai nama file dengan memanggil metode ‘save’ pada objek msg:

import aspose.email as ae

client = ae.clients.pop3.Pop3Client("host", 995, "username", "password", ae.clients.SecurityOptions.AUTO)

# Fetch the message by its sequence number and Save the message using its subject as the file name
msg = client.fetch_message(1)
msg.save("first-message_out.eml", ae.SaveOptions.default_eml)

Menyaring Pesan berdasarkan Pengirim, Penerima, atau Tanggal

Kelas Pop3Client, yang dijelaskan dalam Menghubungkan ke Server POP3, menyediakan metode list_messages() yang mengambil semua pesan dari kotak surat. Untuk hanya mendapatkan pesan yang memenuhi kondisi tertentu, gunakan metode ListMessages() yang menerima MailQuery sebagai argumen. Kelas MailQuery menyediakan berbagai properti untuk menentukan kondisi kueri, misalnya tanggal, subjek, pengirim, penerima, dan sebagainya. Kelas MailQueryBuilder digunakan untuk membangun ekspresi pencarian. Pertama, semua kondisi dan batasan ditetapkan lalu MailQuery diisi dengan kueri yang dibangun oleh MailQueryBuilder. Objek kelas MailQuery digunakan oleh Pop3Client untuk mengekstrak informasi terfilter dari server. Artikel ini menunjukkan cara memfilter pesan email dari kotak surat. 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. Ini juga menunjukkan penerapan filter Tanggal dan Waktu untuk mengambil email spesifik dari kotak surat. Selain itu, juga ditunjukkan cara menerapkan filter sensitif huruf besar/kecil.

Menyaring Pesan dari Kotak Surat

Untuk menyaring pesan dari kotak surat:

  1. Hubungkan dan masuk ke server POP3.
  2. Buat sebuah instance MailQuery dan atur properti yang diinginkan.
  3. Panggil metode Pop3Client.list_messages(MailQuery query) dan berikan MailQuery sebagai parameter untuk mendapatkan hanya pesan yang difilter.

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

Mendapatkan Pesan yang Memenuhi Kriteria Spesifik

Aspose.Email juga memungkinkan pembuatan kriteria pencarian kompleks untuk menanyakan dan memfilter pesan email. Untuk tujuan ini gunakan MailQueryBuilder class dan propertinya. Kriteria untuk pengambilan sebagai berikut:

  • Ambil pesan berdasarkan tanggal pengiriman.
  • Ambil pesan dalam rentang.
  • Ambil pesan dari pengirim tertentu.
  • Ambil pesan dari domain tertentu.
  • Ambil pesan ke penerima tertentu.

Tanggal hari ini

Untuk mengambil pesan berdasarkan tanggal pengiriman, gunakan properti ‘internal_date’ seperti yang ditunjukkan dalam contoh kode di bawah:

import aspose.email as ae
from datetime import datetime

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())

Rentang tanggal

Untuk mengambil pesan dalam rentang tanggal, gunakan properti ‘internal_date’ yang sama dengan menentukan rentang tanggal seperti yang ditunjukkan dalam contoh kode di bawah:

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))

Pengirim Khusus

Untuk mengambil pesan dari pengirim tertentu, gunakan properti ‘from_address’ seperti yang ditunjukkan dalam contoh kode di bawah:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")

Domain khusus

Untuk mengambil pesan dari domain tertentu, gunakan properti ‘from_address’ seperti yang ditunjukkan dalam contoh kode di bawah:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")

Penerima khusus

Untuk mengambil pesan ke penerima tertentu, gunakan properti ’to’ seperti yang ditunjukkan dalam contoh kode di bawah:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")

Membangun Kuiri Kompleks

Terkadang diperlukan untuk memenuhi lebih dari satu kueri. Aspose.Email memungkinkan hal ini dengan menggabungkan kueri dalam beberapa pernyataan. Buat sebuah MailQueryBuilder objek dan gunakan propertinya untuk membangun kueri spesifik.

Menggabungkan Kuiri dengan AND

Potongan kode berikut menunjukkan cara menggabungkan kueri dengan AND.

import aspose.email as ae
from datetime import datetime, timedelta

builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")

Menggabungkan Kuiri dengan OR

Potongan kode berikut menunjukkan cara menggabungkan kueri dengan OR.

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))

Menerapkan Filter Sensitif Huruf Besar/Kecil

API juga menyediakan kemampuan untuk memfilter email dari kotak surat berdasarkan kriteria sensitif huruf. Metode berikut dari StringComparisonField kelas menyediakan kemampuan untuk mencari email dengan menentukan flag sensitif huruf.

Metode Aspose.Email.StringComparisonField.contains(value, ignore_case) Metode Aspose.Email.StringComparisonField.equals(value, ignore_case) Metode Aspose.Email.StringComparisonField.not_contains(value, ignore_case) Metode Aspose.Email.StringComparisonField.not_equals(value, ignore_case)

Potongan kode berikut menunjukkan cara mengimplementasikan kemampuan ini ke dalam proyek Anda:

import aspose.email as ae

builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)