Ciri‑ciri MAPI
Sifat MAPI
Setiap fail MSG menyimpan data sebagai sifat MAPI — pasangan kunci‑nilai berlabel yang dikenalpasti oleh ID sifat dan kod jenis. Aspose.Email FOSS untuk .NET memberikan akses langsung kepada sifat‑sifat ini melalui MapiMessage, MapiPropertyCollection, dan enum CommonMessagePropertyId.
Membaca Sifat
Sifat Kemudahan
MapiMessage mendedahkan sifat-sifat yang paling umum sebagai sifat C# yang ditaip:
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 Sifat Mentah
Untuk sifat yang tidak dipaparkan sebagai medan 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}");Ulang Semua Sifat
// 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}");
}Sifat Penulisan
Tetapkan Sifat pada Mesej 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 Ciri Umum
Enum CommonMessagePropertyId menyediakan pemalar bernama untuk ID sifat MAPI yang sering digunakan:
| Property | Description |
|---|---|
Subject | Subjek mesej |
Body | Badan teks biasa |
BodyHtml | Badan HTML |
SenderName | Nama paparan penghantar |
SenderEmailAddress | Alamat e-mel penghantar |
DisplayTo | Rentetan paparan penerima To |
DisplayCc | Rentetan paparan penerima Cc |
DisplayBcc | Rentetan paparan penerima Bcc |
InternetMessageId | Message-ID RFC 5322 |
MessageDeliveryTime | Cap masa penghantaran |
TransportMessageHeaders | Pengepala RFC 5322 mentah |
AttachFilename | Nama fail lampiran pendek |
AttachLongFilename | Nama fail lampiran panjang |
AttachMimeTag | Jenis MIME lampiran |
AttachContentId | Content-ID lampiran |
Kod Jenis Harta
Enum PropertyTypeCode memetakan kod jenis MAPI:
| Jenis | Keterangan |
|---|---|
PtypString | rentetan Unicode |
PtypString8 | rentetan ANSI |
PtypInteger32 | integer 32-bit |
PtypInteger64 | integer 64-bit |
PtypBoolean | Boolean |
PtypTime | DateTime (FILETIME) |
PtypBinary | array bait |
PtypGuid | GUID |
Sifat Lampiran
Setiap MapiAttachment juga mempunyai koleksi Propertiesnya 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 Fail MSG — Muat dan periksa fail MSG
- Penukaran EML — Tukar antara format
- Kontena CFB — Akses kontena binari peringkat rendah