MAPI‑eigenschappen
MAPI‑eigenschappen
Elk MSG‑bestand slaat gegevens op als MAPI‑eigenschappen — getagde sleutel‑waardeparen die worden geïdentificeerd door een eigenschaps‑ID en typecode.
Aspose.Email FOSS for .NET biedt directe toegang tot deze eigenschappen via MapiMessage, MapiPropertyCollection en de CommonMessagePropertyId‑enum.
Eigenschappen lezen
Convenience‑eigenschappen
MapiMessage exposeert de meest voorkomende eigenschappen als getypeerde C#‑eigenschappen:
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?Ruwe eigenschapstoegang
Voor eigenschappen die niet als gemakvelden worden weergegeven, gebruik 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}");Itereer alle eigenschappen
// 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}");
}Eigenschappen schrijven
Eigenschappen instellen op een nieuw bericht
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));Directe collectie toegang
MapiPropertyCollection biedt Add, Set, Get en 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);Gemeenschappelijke eigenschap-ID’s
De CommonMessagePropertyId enum biedt benoemde constanten voor vaak gebruikte MAPI‑eigenschap‑ID’s:
| Property | Description |
|---|---|
Subject | Berichtonderwerp |
Body | Platte‑tekstinhoud |
BodyHtml | HTML‑inhoud |
SenderName | Weergavenaam afzender |
SenderEmailAddress | E-mailadres afzender |
DisplayTo | Weergave‑string van geadresseerden (Aan) |
DisplayCc | Weergave‑string van geadresseerden (Cc) |
DisplayBcc | Weergave‑string van geadresseerden (Bcc) |
InternetMessageId | RFC 5322 Message-ID |
MessageDeliveryTime | Leverings‑tijdstempel |
TransportMessageHeaders | Ruwe RFC 5322‑headers |
AttachFilename | Korte bestandsnaam bijlage |
AttachLongFilename | Lange bestandsnaam bijlage |
AttachMimeTag | MIME‑type bijlage |
AttachContentId | Content‑ID bijlage |
Eigendomstypecodes
De PropertyTypeCode enum mappt MAPI‑typecodes:
| Type | Beschrijving |
|---|---|
PtypString | Unicode-tekenreeks |
PtypString8 | ANSI-tekenreeks |
PtypInteger32 | 32-bits geheel getal |
PtypInteger64 | 64-bits geheel getal |
PtypBoolean | Boolean |
PtypTime | DateTime (FILETIME) |
PtypBinary | Byte-array |
PtypGuid | GUID |
Bijlage‑eigenschappen
Elke MapiAttachment heeft ook zijn eigen Properties-collectie:
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}");
}Zie ook
- MSG-bestanden lezen — Laad en inspecteer MSG-bestanden
- EML-conversie — Converteer tussen formaten
- CFB-containers — Toegang tot low-level binaire containers