MAPI‑Eigenschaften

MAPI‑Eigenschaften

Jede MSG-Datei speichert Daten als MAPI‑Eigenschaften — getaggte Schlüssel‑Wert‑Paare, die durch eine
Eigenschafts‑ID und einen Typcode identifiziert werden. Aspose.Email FOSS for .NET bietet direkten Zugriff auf diese Eigenschaften über MapiMessage, MapiPropertyCollection und das CommonMessagePropertyId‑Enum.


Eigenschaften lesen

Convenience‑Eigenschaften

MapiMessage stellt die am häufigsten vorkommenden Eigenschaften als typisierte C#‑Eigenschaften bereit:

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?

Rohzugriff auf Eigenschaften

Für Eigenschaften, die nicht als Komfortfelder bereitgestellt werden, verwenden Sie 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}");

Alle Eigenschaften iterieren

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

Schreib‑Eigenschaften

Eigenschaften einer neuen Nachricht festlegen

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

Direkter Sammlungszugriff

MapiPropertyCollection bietet Add, Set, Get und 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);

Gemeinsame Property-IDs

Das CommonMessagePropertyId enum stellt benannte Konstanten für häufig verwendete MAPI Property‑IDs bereit:

PropertyBeschreibung
SubjectBetreff der Nachricht
BodyNur‑Text‑Inhalt
BodyHtmlHTML‑Body
SenderNameAnzeigename des Absenders
SenderEmailAddressE‑Mail‑Adresse des Absenders
DisplayToAnzeigezeichenfolge der Empfänger (An)
DisplayCcAnzeigezeichenfolge der CC‑Empfänger
DisplayBccAnzeigezeichenfolge der BCC‑Empfänger
InternetMessageIdRFC‑5322‑Message-ID
MessageDeliveryTimeZustellungszeitstempel
TransportMessageHeadersRoh‑RFC‑5322‑Header
AttachFilenameKurzer Anhangsdateiname
AttachLongFilenameLanger Anhangsdateiname
AttachMimeTagAnhang MIME‑Typ
AttachContentIdAnhang Content‑ID

Immobilientyp-Codes

Das PropertyTypeCode‑Enum ordnet MAPI‑Typcodes zu:

TypBeschreibung
PtypStringUnicode‑Zeichenfolge
PtypString8ANSI‑Zeichenfolge
PtypInteger3232‑Bit‑Ganzzahl
PtypInteger6464‑Bit‑Ganzzahl
PtypBooleanBoolescher Wert
PtypTimeDatum/Zeit (FILETIME)
PtypBinaryByte‑Array
PtypGuidGUID

Anhangseigenschaften

Jedes MapiAttachment hat auch seine eigene Properties‑Sammlung:

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

Siehe auch

 Deutsch