MAPI‑egenskaber

MAPI‑egenskaber

Alle MSG-filer gemmer data som MAPI‑egenskaber — mærkede nøgle‑værdipar identificeret ved en egenskabs‑ID og typekode. Aspose.Email FOSS for .NET giver direkte adgang til disse egenskaber gennem MapiMessage, MapiPropertyCollection, og CommonMessagePropertyId-enum.


Læse egenskaber

Bekvemmelighedsegenskaber

MapiMessage eksponerer de mest almindelige egenskaber som typede C#-egenskaber:

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?

Rå egenskabsadgang

For egenskaber, der ikke er eksponeret som bekvemmelighedsfelter, brug 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}");

Iterer alle egenskaber

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

Skriveegenskaber

Indstil egenskaber på en ny besked

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

Direkte samlingsadgang

MapiPropertyCollection leverer Add, Set, Get og 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);

Fælles egenskabs-id’er

CommonMessagePropertyId-enumet giver navngivne konstanter for ofte anvendte MAPI‑egenskabs‑ID’er:

PropertyDescription
SubjectBeskedemne
BodyKrop i ren tekst
BodyHtmlHTML‑krop
SenderNameAfsenders visningsnavn
SenderEmailAddressAfsenders e‑mailadresse
DisplayToVisningsstreng for til‑modtagere
DisplayCcVisningsstreng for cc‑modtagere
DisplayBccVisningsstreng for bcc‑modtagere
InternetMessageIdRFC 5322 Message‑ID
MessageDeliveryTimeLeveringstidspunkt
TransportMessageHeadersRå RFC 5322‑overskrifter
AttachFilenameKort vedhæftningsfilnavn
AttachLongFilenameLangt vedhæftningsfilnavn
AttachMimeTagVedhæftnings MIME‑type
AttachContentIdVedhæftnings Content‑ID

Ejendomstypekoder

PropertyTypeCode-enumet kortlægger MAPI-typkoder:

TypeBeskrivelse
PtypStringUnicode‑streng
PtypString8ANSI‑streng
PtypInteger3232‑bit heltal
PtypInteger6464‑bit heltal
PtypBooleanBoolesk
PtypTimeDateTime (FILETIME)
PtypBinaryByte‑array
PtypGuidGUID

Vedhæftningsegenskaber

Hver MapiAttachment har også sin egen Properties-samling:

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

Se også

 Dansk