MAPI vlastnosti
MAPI vlastnosti
Každý súbor MSG ukladá údaje ako MAPI vlastnosti — označené páry kľúč‑hodnota identifikované ID vlastnosti a typovým kódom. Aspose.Email FOSS pre .NET poskytuje priamy prístup k týmto vlastnostiam prostredníctvom MapiMessage, MapiPropertyCollection a enumu CommonMessagePropertyId.
Čítanie vlastností
Vlastnosti pohodlia
MapiMessage zverejňuje najbežnejšie vlastnosti ako typované C# vlastnosti:
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?Priamy prístup k vlastnosti
Pre vlastnosti, ktoré nie sú vystavené ako polia pohodlia, použite 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}");Iterovať všetky vlastnosti
// 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}");
}Zapisovanie vlastností
Nastaviť vlastnosti novej správy
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));Priamy prístup k zbierke
MapiPropertyCollection poskytuje Add, Set, Get a 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);Spoločné ID vlastností
Výčtový typ CommonMessagePropertyId poskytuje pomenované konštanty pre často používané identifikátory vlastností MAPI:
| Vlastnosť | Popis |
|---|---|
Subject | Predmet správy |
Body | Telo v obyčajnom texte |
BodyHtml | HTML telo |
SenderName | Zobrazované meno odosielateľa |
SenderEmailAddress | E‑mailová adresa odosielateľa |
DisplayTo | Zobrazovací reťazec príjemcov (To) |
DisplayCc | Zobrazovací reťazec príjemcov (Cc) |
DisplayBcc | Zobrazovací reťazec príjemcov (Bcc) |
InternetMessageId | RFC 5322 Message-ID |
MessageDeliveryTime | Čas doručenia |
TransportMessageHeaders | Surové hlavičky RFC 5322 |
AttachFilename | Krátky názov prílohy |
AttachLongFilename | Dlhý názov prílohy |
AttachMimeTag | MIME typ prílohy |
AttachContentId | Content-ID prílohy |
Kódy typov nehnuteľností
Enum PropertyTypeCode mapuje kódy typu MAPI:
| Typ | Popis |
|---|---|
PtypString | Unicode reťazec |
PtypString8 | ANSI reťazec |
PtypInteger32 | 32-bitové celé číslo |
PtypInteger64 | 64-bitové celé číslo |
PtypBoolean | Boolean |
PtypTime | DateTime (FILETIME) |
PtypBinary | Pole bajtov |
PtypGuid | GUID |
Vlastnosti prílohy
Každý MapiAttachment má tiež svoju vlastnú kolekciu Properties:
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}");
}Pozri tiež
- Reading MSG Files — Načítanie a kontrola MSG súborov
- EML Conversion — Konverzia medzi formátmi
- CFB Containers — Prístup k nízkoúrovňovým binárnym kontajnerom