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:

PropertyDescription
SubjectSubjek mesej
BodyBadan teks biasa
BodyHtmlBadan HTML
SenderNameNama paparan penghantar
SenderEmailAddressAlamat e-mel penghantar
DisplayToRentetan paparan penerima To
DisplayCcRentetan paparan penerima Cc
DisplayBccRentetan paparan penerima Bcc
InternetMessageIdMessage-ID RFC 5322
MessageDeliveryTimeCap masa penghantaran
TransportMessageHeadersPengepala RFC 5322 mentah
AttachFilenameNama fail lampiran pendek
AttachLongFilenameNama fail lampiran panjang
AttachMimeTagJenis MIME lampiran
AttachContentIdContent-ID lampiran

Kod Jenis Harta

Enum PropertyTypeCode memetakan kod jenis MAPI:

JenisKeterangan
PtypStringrentetan Unicode
PtypString8rentetan ANSI
PtypInteger32integer 32-bit
PtypInteger64integer 64-bit
PtypBooleanBoolean
PtypTimeDateTime (FILETIME)
PtypBinaryarray bait
PtypGuidGUID

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

 Bahasa Melayu