MAPI‑egenskaper

MAPI‑egenskaper

Varje MSG-fil lagrar data som MAPI‑egenskaper — taggade nyckel‑värdepar identifierade av ett egenskaps‑ID och en typkod. Aspose.Email FOSS för .NET ger direkt åtkomst till dessa egenskaper genom MapiMessage, MapiPropertyCollection och CommonMessagePropertyId enum.


Läsa egenskaper

Convenience‑egenskaper

MapiMessage exponerar de vanligaste egenskaperna som typade C#‑egenskaper:

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å egenskapsåtkomst

För egenskaper som inte exponeras som bekvämlighetsfält, använd 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}");

Iterera alla egenskaper

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

Skriv egenskaper

Ställ in egenskaper på ett nytt meddelande

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

Direkt samlingsåtkomst

MapiPropertyCollection tillhandahåller Add, Set, Get och 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);

Gemensamma egenskaps-ID:n

CommonMessagePropertyId-enumet tillhandahåller namngivna konstanter för ofta använda MAPI‑egenskaps‑ID:n:

PropertyDescription
SubjectMeddelandeämne
BodyKropp i klartext
BodyHtmlHTML‑kropp
SenderNameAvsändarens visningsnamn
SenderEmailAddressAvsändarens e‑postadress
DisplayToVisningssträng för mottagare (Till)
DisplayCcVisningssträng för kopiemottagare (Cc)
DisplayBccVisningssträng för dolda kopiemottagare (Bcc)
InternetMessageIdRFC 5322 Message-ID
MessageDeliveryTimeLeveranstidsstämpel
TransportMessageHeadersRå RFC 5322‑headers
AttachFilenameKort filnamn för bilaga
AttachLongFilenameLångt filnamn för bilaga
AttachMimeTagBilagans MIME‑typ
AttachContentIdBilagans Content-ID

Fastighetstypkoder

Enumen PropertyTypeCode mappar MAPI‑typkoder:

TypBeskrivning
PtypStringUnicode‑sträng
PtypString8ANSI‑sträng
PtypInteger3232‑bit heltal
PtypInteger6464‑bit heltal
PtypBooleanBoolesk
PtypTimeDateTime (FILETIME)
PtypBinaryByte‑array
PtypGuidGUID

Egenskaper för bilaga

Varje MapiAttachment har också 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 även

 Svenska