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:
| Property | Beschreibung |
|---|---|
Subject | Betreff der Nachricht |
Body | Nur‑Text‑Inhalt |
BodyHtml | HTML‑Body |
SenderName | Anzeigename des Absenders |
SenderEmailAddress | E‑Mail‑Adresse des Absenders |
DisplayTo | Anzeigezeichenfolge der Empfänger (An) |
DisplayCc | Anzeigezeichenfolge der CC‑Empfänger |
DisplayBcc | Anzeigezeichenfolge der BCC‑Empfänger |
InternetMessageId | RFC‑5322‑Message-ID |
MessageDeliveryTime | Zustellungszeitstempel |
TransportMessageHeaders | Roh‑RFC‑5322‑Header |
AttachFilename | Kurzer Anhangsdateiname |
AttachLongFilename | Langer Anhangsdateiname |
AttachMimeTag | Anhang MIME‑Typ |
AttachContentId | Anhang Content‑ID |
Immobilientyp-Codes
Das PropertyTypeCode‑Enum ordnet MAPI‑Typcodes zu:
| Typ | Beschreibung |
|---|---|
PtypString | Unicode‑Zeichenfolge |
PtypString8 | ANSI‑Zeichenfolge |
PtypInteger32 | 32‑Bit‑Ganzzahl |
PtypInteger64 | 64‑Bit‑Ganzzahl |
PtypBoolean | Boolescher Wert |
PtypTime | Datum/Zeit (FILETIME) |
PtypBinary | Byte‑Array |
PtypGuid | GUID |
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
- Lesen von MSG-Dateien — Laden und Inspizieren von MSG-Dateien
- EML-Konvertierung — Konvertieren zwischen Formaten
- CFB-Container — Zugriff auf binäre Container auf niedriger Ebene