MAPI‑eigenschappen

MAPI‑eigenschappen

Elk MSG‑bestand slaat gegevens op als MAPI‑eigenschappen — getagde sleutel‑waardeparen die worden geïdentificeerd door een eigenschaps‑ID en typecode.
Aspose.Email FOSS for .NET biedt directe toegang tot deze eigenschappen via MapiMessage, MapiPropertyCollection en de CommonMessagePropertyId‑enum.


Eigenschappen lezen

Convenience‑eigenschappen

MapiMessage exposeert de meest voorkomende eigenschappen als getypeerde C#‑eigenschappen:

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?

Ruwe eigenschapstoegang

Voor eigenschappen die niet als gemakvelden worden weergegeven, gebruik 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}");

Itereer alle eigenschappen

// 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}");
}

Eigenschappen schrijven

Eigenschappen instellen op een nieuw bericht

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));

Directe collectie toegang

MapiPropertyCollection biedt Add, Set, Get en 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);

Gemeenschappelijke eigenschap-ID’s

De CommonMessagePropertyId enum biedt benoemde constanten voor vaak gebruikte MAPI‑eigenschap‑ID’s:

PropertyDescription
SubjectBerichtonderwerp
BodyPlatte‑tekstinhoud
BodyHtmlHTML‑inhoud
SenderNameWeergavenaam afzender
SenderEmailAddressE-mailadres afzender
DisplayToWeergave‑string van geadresseerden (Aan)
DisplayCcWeergave‑string van geadresseerden (Cc)
DisplayBccWeergave‑string van geadresseerden (Bcc)
InternetMessageIdRFC 5322 Message-ID
MessageDeliveryTimeLeverings‑tijdstempel
TransportMessageHeadersRuwe RFC 5322‑headers
AttachFilenameKorte bestandsnaam bijlage
AttachLongFilenameLange bestandsnaam bijlage
AttachMimeTagMIME‑type bijlage
AttachContentIdContent‑ID bijlage

Eigendomstypecodes

De PropertyTypeCode enum mappt MAPI‑typecodes:

TypeBeschrijving
PtypStringUnicode-tekenreeks
PtypString8ANSI-tekenreeks
PtypInteger3232-bits geheel getal
PtypInteger6464-bits geheel getal
PtypBooleanBoolean
PtypTimeDateTime (FILETIME)
PtypBinaryByte-array
PtypGuidGUID

Bijlage‑eigenschappen

Elke MapiAttachment heeft ook zijn eigen Properties-collectie:

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}");
}

Zie ook

 Nederlands