MAPI‑egenskaper

MAPI-egenskaper

Hver MSG-fil lagrer data som MAPI‑egenskaper — merkede nøkkel‑verdipar identifisert av en egenskaps‑ID og typekode. Aspose.Email FOSS for .NET gir direkte tilgang til disse egenskapene gjennom MapiMessage, MapiPropertyCollection, og CommonMessagePropertyId‑enum.


Lese egenskaper

Praktiske egenskaper

MapiMessage eksponerer de mest vanlige egenskapene som typede 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å egenskapstilgang

For egenskaper som ikke er eksponert som praktiske felter, bruk 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 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}");
}

Skriveegenskaper

Angi egenskaper på en ny melding

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 tilgang til samling

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

Felles egenskaps‑IDer

CommonMessagePropertyId-enumet gir navngitte konstanter for ofte brukte MAPI‑egenskaps‑ID‑er:

PropertyDescription
SubjectMeldingsemne
BodyRen tekstkropp
BodyHtmlHTML‑kropp
SenderNameAvsenders visningsnavn
SenderEmailAddressAvsenders e‑postadresse
DisplayToVisningsstreng for til‑mottakere
DisplayCcVisningsstreng for cc‑mottakere
DisplayBccVisningsstreng for bcc‑mottakere
InternetMessageIdRFC 5322 Message-ID
MessageDeliveryTimeLeveringstidspunkt
TransportMessageHeadersRå RFC 5322‑overskrifter
AttachFilenameKort vedleggsfilnavn
AttachLongFilenameLangt vedleggsfilnavn
AttachMimeTagVedleggs MIME‑type
AttachContentIdVedleggs Content-ID

Eiendomstypekoder

PropertyTypeCode-enumet kartlegger MAPI-typekoder:

TypeDescription
PtypStringUnicode‑streng
PtypString8ANSI‑streng
PtypInteger3232‑bits heltall
PtypInteger6464‑bits heltall
PtypBooleanBoolsk
PtypTimeDateTime (FILETIME)
PtypBinaryByte‑array
PtypGuidGUID

Egenskaper for vedlegg

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å

 Norsk