
- Kategori Properti MAPI
- Daftar Semua Properti MAPI
- Daftar Properti MAPI Bernama
- Mengambil Properti Berdasarkan Deskriptor
- Mengambil Properti Berdasarkan Tag
- Menggunakan Metode GetProperty
- Bekerja dengan Properti Kustom
Mengelola data email secara programatis bisa menjadi kompleks, terutama saat berhadapan dengan properti Antarmuka Pemrograman Aplikasi Pesan (MAPI). Properti ini adalah atribut atau metadata yang terkait dengan objek MAPI seperti pesan, folder, penerima, dan komponen lain dalam sistem pesan. Properti ini memberikan informasi terperinci tentang objek, seperti subjek email, alamat pengirim, tanggal email dikirim, dan lainnya. Properti MAPI digunakan secara luas dalam klien email dan aplikasi pesan lainnya untuk mengelola dan memanipulasi data email. Artikel ini menggali berbagai teknik untuk mengakses, enum, dan memanipulasi properti MAPI menggunakan Aspose.Email untuk .NET.
API .NET untuk Mengelola Properti MAPI di C#
Aspose.Email untuk .NET menyediakan dukungan komprehensif untuk menangani properti Antarmuka Pemrograman Aplikasi Pesan, memungkinkan pengembang untuk mengelola dan memanipulasi data email dengan kontrol yang mendetail. Ini juga merupakan API yang luas yang memungkinkan pengembang untuk melengkapi aplikasi email mereka dengan fitur-fitur yang kuat untuk pemrosesan pesan dan tugas terkait lainnya.
Dengan menggunakan Aspose.Email untuk .NET, pengembang dapat membuat solusi manajemen dan pemrosesan email yang canggih. Untuk mulai menggunakan pustaka ini, Anda dapat mengunduh dari situs web Aspose atau NuGet dan mengintegrasikannya ke dalam proyek Anda.
Kategori Properti MAPI
Pastikan Anda memiliki Aspose.Email dalam proyek Anda dan mari kita mulai. Properti MAPI dapat dikategorikan menjadi tiga jenis utama: properti standar, properti bernama, dan properti kustom (didefinisikan pengguna). Setiap kategori memiliki tujuan yang berbeda dan menyediakan tingkat fleksibilitas dan kontrol yang bervariasi bagi pengembang yang bekerja dengan data email. Berikut adalah gambaran umum dari masing-masing jenis:
Properti Standar
Didefinisikan oleh spesifikasi MAPI, mereka memiliki tag properti yang telah ditentukan dan umum digunakan untuk atribut standar objek pesan. Contohnya:
- PR_SUBJECT: Subjek pesan.
- PR_SENDER_NAME: Nama pengirim.
- PR_DELIVER_TIME: Tanggal dan waktu ketika pesan asli disampaikan.
Properti Bernama
Diidentifikasi dengan GUID dan nama string atau pengidentifikasi integer, properti ini memungkinkan kategorisasi dan identifikasi yang lebih spesifik di luar properti standar.
Properti Kustom (Didefinisikan Pengguna)
Didefinisikan oleh pengembang, mereka memperluas fungsionalitas objek MAPI, memungkinkan penanganan data yang disesuaikan dan spesifik aplikasi.
Daftar Semua Properti MAPI
Untuk mendaftar semua properti MAPI dalam sebuah pesan, kita akan menggunakan metode MapiMessage.Load untuk memuat pesan dan mengiterasi properti-propertinya. Contoh kode di bawah ini menunjukkan cara memuat pesan MAPI, mengiterasi melalui propertinya, dan mencetak informasi terperinci tentang setiap properti menggunakan Aspose.Email untuk .NET:
- Muat file pesan MAPI dari jalur yang ditentukan.
- Iterasi melalui koleksi
msg.Properties.Values
untuk mengakses setiap properti. - Untuk setiap properti MAPI, cetak tag, nama kanonik, dan tipe data:
- Properti Tag memberikan pengenal unik untuk properti MAPI.
- Properti Descriptor.CanonicalName memberikan nama yang dapat dibaca manusia dari properti.
- Properti Descriptor.DataType menunjukkan tipe data dari properti.
// Load the email message from a file | |
var msg = MapiMessage.Load(@"D:\Aspose\Files\msg\test.msg"); | |
// Iterate through all MAPI properties and print their details | |
foreach (var mapiProperty in msg.Properties.Values) | |
{ | |
Console.WriteLine($"Tag: {mapiProperty.Tag}"); | |
Console.WriteLine($"Canonical Name: {mapiProperty.Descriptor.CanonicalName}"); | |
Console.WriteLine($"Data Type: {mapiProperty.Descriptor.DataType}"); | |
} |
Daftar Properti MAPI Bernama
Sementara properti MAPI biasa diidentifikasi dengan tag properti 16-bit yang terdiri dari tipe properti dan pengidentifikasi properti, properti bernama diidentifikasi dengan kombinasi GUID dan baik nama string atau pengidentifikasi integer:
- GUID (Pengidentifikasi Unik Global): Pengidentifikasi unik yang memastikan bahwa set properti adalah unik. GUID ini biasanya diberikan oleh pengembang.
- Nama atau ID:
- Nama string (sensitif terhadap huruf besar-kecil).
- Pengidentifikasi integer 32-bit.
Potongan kode berikut menunjukkan cara menggunakan Aspose.Email untuk .NET untuk mengiterasi melalui properti MAPI bernama dari sebuah pesan dan mencetak informasi terperinci berdasarkan tipe deskriptor properti:
- Iterasi melalui setiap properti bernama dengan mengakses koleksi ‘NamedProperties.Values’ dari objek MapiMessage yang dimuat untuk mendapatkan semua properti MAPI bernama.
- Periksa apakah Deskriptor dari properti bernama saat ini adalah tipe PidNamePropertyDescriptor. Jika iya, lakukan cast Deskriptor ke PidNamePropertyDescriptor. Cetak GUID, Nama Kanonik, dan Tipe Data dari properti tersebut.
- Periksa apakah Deskriptor dari properti bernama saat ini adalah tipe PidLidPropertyDescriptor. Jika iya, lakukan cast Deskriptor ke PidLidPropertyDescriptor. Cetak GUID, Nama Kanonik, ID Panjang, dan Tipe Data dari properti tersebut.
foreach (MapiNamedProperty mapiNamedProperty in msg.NamedProperties.Values) | |
{ | |
if (mapiNamedProperty.Descriptor is PidNamePropertyDescriptor pidNamePropertyDescriptor) | |
{ | |
Console.WriteLine($"GUID: {pidNamePropertyDescriptor.PropertySet}"); | |
Console.WriteLine($"Canonical Name: {pidNamePropertyDescriptor.CanonicalName}"); | |
Console.WriteLine($"Data Type: {pidNamePropertyDescriptor.DataType}"); | |
} | |
if (mapiNamedProperty.Descriptor is PidLidPropertyDescriptor pidLidPropertyDescriptor) | |
{ | |
Console.WriteLine($"GUID: {pidLidPropertyDescriptor.PropertySet}"); | |
Console.WriteLine($"Canonical Name: {pidLidPropertyDescriptor.CanonicalName}"); | |
Console.WriteLine($"Long ID: {pidLidPropertyDescriptor.LongId}"); | |
Console.WriteLine($"Data Type: {pidLidPropertyDescriptor.DataType}"); | |
} | |
} |
Dengan demikian, kita telah mencetak atribut spesifik seperti PropertySet
, CanonicalName
, DataType
, dan LongId
tergantung pada tipe deskriptor (PidNamePropertyDescriptor
atau PidLidPropertyDescriptor
).
Mengambil Properti Berdasarkan Deskriptor
Mengambil properti berdasarkan deskriptor adalah cara yang mudah untuk mengakses properti MAPI tertentu tanpa mengiterasi melalui seluruh koleksi properti. Aspose.Email untuk .NET menyediakan cara yang nyaman untuk mengambil properti menggunakan KnownPropertyList. Contoh kode di bawah ini menunjukkan cara mengambil dan mencetak detail dari properti tertentu, seperti InternetMessageId, jika itu ada.
- Akses properti InternetMessageId dari koleksi Properties objek MapiMessage menggunakan KnownPropertyList.
- Verifikasi bahwa properti tersebut tidak null untuk memastikan bahwa itu ada dalam pesan.
- Cetak detail dari properti yang diambil: Tag, Nama Kanonik, dan Tipe Data.
- Jika tipe data properti adalah string, gunakan metode GetString untuk mengambil nilai properti dan mencetaknya.
// Retrieve and print the InternetMessageId property if it exists | |
if (msg.Properties[KnownPropertyList.InternetMessageId] != null) | |
{ | |
var property = msg.Properties[KnownPropertyList.InternetMessageId]; | |
Console.WriteLine($"Tag: {property.Tag}"); | |
Console.WriteLine($"Canonical Name: {property.Descriptor.CanonicalName}"); | |
Console.WriteLine($"Data Type: {property.Descriptor.DataType}"); | |
// Retrieve and print the property value if it is a string | |
if (property.Descriptor.DataType == PropertyDataType.String) | |
{ | |
var propertyValue = property.GetString(); | |
Console.WriteLine($"Value: {propertyValue}"); | |
} | |
} |
Mengambil Properti Berdasarkan Tag
Tag properti adalah pengidentifikasi 32-bit yang secara unik mengidentifikasi properti MAPI. Ia terdiri dari ID properti dan tipe properti. Menggunakan tag properti, Anda dapat langsung mengakses properti tertentu dalam pesan MAPI. Contoh kode di bawah ini menunjukkan cara mengambil dan mencetak detail dari properti tertentu, seperti PR_HASATTACH, jika itu ada.
- Gunakan MapiPropertyTag untuk langsung mengakses properti PR_HASATTACH dari koleksi Properties objek MapiMessage.
- Verifikasi bahwa properti tersebut tidak null untuk memastikan bahwa itu ada dalam pesan.
- Cetak detail dari properti yang diambil: Tag dan Tipe Data.
- Jika tipe data properti adalah boolean, gunakan metode GetBoolean untuk mengambil nilai properti dan mencetak apakah pesan memiliki lampiran.
// Retrieve and print the PR_HASATTACH property if it exists | |
if (msg.Properties[MapiPropertyTag.PR_HASATTACH] != null) | |
{ | |
var property = msg.Properties[MapiPropertyTag.PR_HASATTACH]; | |
Console.WriteLine($"Tag: {property.Tag}"); | |
Console.WriteLine($"Data Type: {property.DataType}"); | |
// Retrieve and print the property value if it is a boolean | |
if (property.DataType == (int)MapiPropertyType.PT_BOOLEAN) | |
{ | |
var propertyValue = property.GetBoolean(); | |
Console.WriteLine($"Has Attachments: {propertyValue}"); | |
} | |
} |
Menggunakan Metode GetProperty
Metode GetProperty menyederhanakan proses pengambilan properti biasa dan bernama dari sebuah pesan MAPI. Metode ini memungkinkan Anda untuk mengakses properti secara langsung berdasarkan deskriptor atau tag tanpa memeriksa koleksi properti secara manual. Contoh kode di bawah ini menunjukkan cara memanfaatkan metode GetProperty untuk mengakses properti MAPI tertentu:
- Gunakan metode GetProperty untuk secara langsung mengakses properti CurrentVersionName dari kelas KnownPropertyList.
- Verifikasi bahwa properti tersebut tidak null untuk memastikan bahwa itu ada dalam pesan.
- Gunakan metode GetString untuk mengambil nilai properti dan mencetaknya.
// Retrieve and print the CurrentVersionName property | |
var namedProperty = msg.GetProperty(KnownPropertyList.CurrentVersionName); | |
if (namedProperty != null) | |
{ | |
Console.WriteLine($"Current Version Name: {namedProperty.GetString()}"); | |
} |
Di sini, GetProperty
digunakan untuk mengakses properti CurrentVersionName
secara langsung.
Bekerja dengan Properti Kustom
Properti MAPI kustom adalah properti tambahan yang bukan bagian dari set properti MAPI yang telah ditentukan. Mereka dibuat untuk menyimpan data spesifik aplikasi dan didefinisikan oleh pengembang. Dengan memungkinkan pengembang untuk mendefinisikan dan menggunakan properti tambahan, MAPI menyediakan cara yang fleksibel dan kuat untuk menyimpan dan mengelola data kustom dalam aplikasi pesan. Properti kustom adalah properti bernama (digunakan GUID dan nama string). Aspose.Email memperkenalkan pendekatan yang dapat Anda gunakan untuk mengambil semua properti kustom yang didefinisikan dalam pesan. Ini dicapai dengan metode GetCustomProperties. Contoh kode di bawah ini menunjukkan cara mengambil dan mencetak semua properti kustom yang didefinisikan dalam pesan MAPI:
- Gunakan metode GetCustomProperties untuk memperoleh koleksi semua properti kustom yang didefinisikan dalam pesan.
- Iterasi melalui setiap properti kustom dalam koleksi yang diambil.
- Cetak detail properti: Tag, Nama Kanonik, dan Tipe Data.
// Retrieve and print custom properties | |
var customProperties = msg.GetCustomProperties(); | |
foreach (var customProperty in customProperties) | |
{ | |
Console.WriteLine($"Tag: {customProperty.Tag}"); | |
Console.WriteLine($"Canonical Name: {customProperty.Descriptor.CanonicalName}"); | |
Console.WriteLine($"Data Type: {customProperty.Descriptor.DataType}"); | |
} |
Kesimpulan
Artikel ini telah menjelajahi berbagai teknik untuk mengakses, enum, dan memanipulasi properti MAPI menggunakan Aspose.Email untuk .NET. Aspose.Email menyediakan dukungan komprehensif untuk menangani properti ini, memungkinkan pengembang untuk mengelola dan memanipulasi data email dengan kontrol yang mendetail. Dengan menggunakan pustaka ini, pengembang dapat membuat solusi manajemen dan pemrosesan email yang canggih, sehingga lebih mudah untuk bekerja dengan properti standar, bernama, dan kustom.
Selain itu, Aspose.Email menyediakan dokumentasi yang komprehensif, referensi API yang luas, dan berbagai alat dan aplikasi online gratis untuk meningkatkan proses pengembangan Anda. Pengembang juga dapat mengakses forum dukungan gratis untuk bantuan dan wawasan komunitas, serta tetap diperbarui dengan tips dan tutorial terbaru melalui blog Aspose. Sumber daya ini sangat berharga untuk memaksimalkan potensi pustaka ini dalam proyek Anda.