Properti MAPI
Properti MAPI
Setiap file MSG menyimpan data sebagai properti MAPI — pasangan kunci‑nilai yang ditandai yang diidentifikasi oleh ID properti dan kode tipe. Aspose.Email FOSS for .NET memberikan akses langsung ke properti ini melalui MapiMessage, MapiPropertyCollection, dan enum CommonMessagePropertyId.
Membaca Properti
Properti Kemudahan
MapiMessage menampilkan properti paling umum sebagai properti C# yang bertipe:
using Aspose.Email.Foss.Msg;
using var message = MapiMessage.FromFile("sample.msg");
Console.WriteLine(message.Subject); // string?
Console.WriteLine(message.Body); // string?
Console.WriteLine(message.HtmlBody); // string?
Console.WriteLine(message.SenderName); // string?
Console.WriteLine(message.SenderEmailAddress); // string?
Console.WriteLine(message.InternetMessageId); // string?
Console.WriteLine(message.MessageDeliveryTime); // DateTime?
Console.WriteLine(message.MessageClass); // string?Akses Properti Mentah
Untuk properti yang tidak diekspos sebagai field kemudahan, gunakan GetPropertyValue:
// Read a string property by ID and type
var displayTo = message.GetPropertyValue(
(ushort)CommonMessagePropertyId.DisplayTo,
(ushort)PropertyTypeCode.PtypString,
decode: true);
Console.WriteLine($"Display To: {displayTo}");Iterasi Semua Properti
// List all property keys (ID + type pairs)
foreach (var key in message.IterPropertyKeys())
Console.WriteLine($"Property: 0x{key:X8}");
// Iterate full property objects
foreach (var prop in message.IterProperties())
{
Console.WriteLine($"ID=0x{prop.PropertyId:X4} " +
$"Type=0x{prop.PropertyType:X4} " +
$"Tag=0x{prop.PropertyTag:X8} " +
$"Value={prop.Value}");
}Menulis Properti
Atur Properti pada Pesan Baru
var message = MapiMessage.Create("Test", "Body");
message.SetProperty(
(ushort)CommonMessagePropertyId.SenderName,
(ushort)PropertyTypeCode.PtypString,
"Alice");
message.SetProperty(
(ushort)CommonMessagePropertyId.SenderEmailAddress,
(ushort)PropertyTypeCode.PtypString,
"alice@example.com");
message.SetProperty(
(ushort)CommonMessagePropertyId.MessageDeliveryTime,
(ushort)PropertyTypeCode.PtypTime,
new DateTime(2026, 3, 15, 10, 30, 0, DateTimeKind.Utc));Akses Koleksi Langsung
MapiPropertyCollection menyediakan Add, Set, Get, dan Remove:
// Access the property collection
var props = message.Properties;
// Add a property
props.Add(
(ushort)CommonMessagePropertyId.InternetCodepage,
(ushort)PropertyTypeCode.PtypInteger32,
65001, // UTF-8
flags: 0);
// Read it back
var codepage = props.Get(
(ushort)CommonMessagePropertyId.InternetCodepage,
(ushort)PropertyTypeCode.PtypInteger32);
Console.WriteLine($"Codepage: {codepage?.Value}");
// Remove a property
props.Remove(
(ushort)CommonMessagePropertyId.InternetCodepage,
(ushort)PropertyTypeCode.PtypInteger32);ID Properti Umum
Enum CommonMessagePropertyId menyediakan konstanta bernama untuk ID properti MAPI yang sering digunakan:
| Properti | Deskripsi |
|---|---|
Subject | Subjek pesan |
Body | Isi teks biasa |
BodyHtml | Isi HTML |
SenderName | Nama tampilan pengirim |
SenderEmailAddress | Alamat email pengirim |
DisplayTo | String tampilan penerima To |
DisplayCc | String tampilan penerima Cc |
DisplayBcc | String tampilan penerima Bcc |
InternetMessageId | RFC 5322 Message-ID |
MessageDeliveryTime | Stempel waktu pengiriman |
TransportMessageHeaders | Header RFC 5322 mentah |
AttachFilename | Nama file lampiran pendek |
AttachLongFilename | Nama file lampiran panjang |
AttachMimeTag | Tipe MIME lampiran |
AttachContentId | Content-ID lampiran |
Kode Tipe Properti
Enum PropertyTypeCode memetakan kode tipe MAPI:
| Tipe | Deskripsi |
|---|---|
PtypString | Unicode string |
PtypString8 | ANSI string |
PtypInteger32 | 32-bit integer |
PtypInteger64 | 64-bit integer |
PtypBoolean | Boolean |
PtypTime | DateTime (FILETIME) |
PtypBinary | Byte array |
PtypGuid | GUID |
Properti Lampiran
Setiap MapiAttachment juga memiliki koleksi Properties miliknya sendiri:
foreach (var attachment in message.Attachments)
{
Console.WriteLine($"Attachment: {attachment.Filename}");
foreach (var prop in attachment.Properties.IterProperties())
Console.WriteLine($" 0x{prop.PropertyTag:X8} = {prop.Value}");
}Lihat Juga
- Membaca File MSG — Memuat dan memeriksa file MSG
- Konversi EML — Mengonversi antar format
- Kontainer CFB — Akses kontainer biner tingkat rendah