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:
| Property | Description |
|---|---|
Subject | Meddelandeämne |
Body | Kropp i klartext |
BodyHtml | HTML‑kropp |
SenderName | Avsändarens visningsnamn |
SenderEmailAddress | Avsändarens e‑postadress |
DisplayTo | Visningssträng för mottagare (Till) |
DisplayCc | Visningssträng för kopiemottagare (Cc) |
DisplayBcc | Visningssträng för dolda kopiemottagare (Bcc) |
InternetMessageId | RFC 5322 Message-ID |
MessageDeliveryTime | Leveranstidsstämpel |
TransportMessageHeaders | Rå RFC 5322‑headers |
AttachFilename | Kort filnamn för bilaga |
AttachLongFilename | Långt filnamn för bilaga |
AttachMimeTag | Bilagans MIME‑typ |
AttachContentId | Bilagans Content-ID |
Fastighetstypkoder
Enumen PropertyTypeCode mappar MAPI‑typkoder:
| Typ | Beskrivning |
|---|---|
PtypString | Unicode‑sträng |
PtypString8 | ANSI‑sträng |
PtypInteger32 | 32‑bit heltal |
PtypInteger64 | 64‑bit heltal |
PtypBoolean | Boolesk |
PtypTime | DateTime (FILETIME) |
PtypBinary | Byte‑array |
PtypGuid | GUID |
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
- Läsa MSG-filer — Läs in och inspektera MSG-filer
- EML-konvertering — Konvertera mellan format
- CFB-containrar — Lågnivååtkomst till binära behållare