MAPI-ominaisuudet
MAPI-ominaisuudet
Jokainen MSG‑tiedosto tallentaa tiedot MAPI‑ominaisuuksina — tunnistetut avain‑arvo‑parit, jotka on määritelty ominaisuustunnuksella ja tyyppikoodilla. Aspose.Email FOSS for .NET tarjoaa suoran pääsyn näihin ominaisuuksiin MapiMessage, MapiPropertyCollection ja CommonMessagePropertyId‑enumin kautta.
Ominaisuuksien lukeminen
Käytännölliset ominaisuudet
MapiMessage paljastaa yleisimmät ominaisuudet tyypitettyinä C#-ominaisuuksina:
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?Raaka ominaisuuksien käyttö
Jos ominaisuuksia ei ole esitelty kätevänä kenttinä, käytä 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}");Iteroi kaikki ominaisuudet
// 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}");
}Kirjoitusominaisuudet
Aseta ominaisuudet uuteen viestiin
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));Suora kokoelman käyttö
MapiPropertyCollection tarjoaa Add, Set, Get ja 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);Yleiset ominaisuustunnisteet
CommonMessagePropertyId enum tarjoaa nimettyjä vakioita usein käytetyille MAPI-ominaisuustunnisteille:
| Ominaisuus | Kuvaus |
|---|---|
Subject | Viestin aihe |
Body | Tekstirunko |
BodyHtml | HTML-runko |
SenderName | Lähettäjän näyttönimi |
SenderEmailAddress | Lähettäjän sähköpostiosoite |
DisplayTo | Vastaanottajien (To) näyttömerkkijono |
DisplayCc | Kopio (Cc) -vastaanottajien näyttömerkkijono |
DisplayBcc | Piilokopio (Bcc) -vastaanottajien näyttömerkkijono |
InternetMessageId | RFC 5322 -viestin tunniste (Message-ID) |
MessageDeliveryTime | Toimituksen aikaleima |
TransportMessageHeaders | Raakat RFC 5322 -otsikot |
AttachFilename | Lyhyt liitetiedoston nimi |
AttachLongFilename | Pitkä liitetiedoston nimi |
AttachMimeTag | Liitteen MIME-tyyppi |
AttachContentId | Liitteen Content-ID |
Kiinteistön tyyppikoodit
PropertyTypeCode enum kartoittaa MAPI-tyyppikoodit:
| Tyyppi | Kuvaus |
|---|---|
PtypString | Unicode-merkkijono |
PtypString8 | ANSI-merkkijono |
PtypInteger32 | 32-bittinen kokonaisluku |
PtypInteger64 | 64-bittinen kokonaisluku |
PtypBoolean | Boolen |
PtypTime | DateTime (FILETIME) |
PtypBinary | Tavu-taulukko |
PtypGuid | GUID |
Liitteen ominaisuudet
Jokaisella MapiAttachment:lla on myös oma Properties-kokoelma:
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}");
}Katso myös
- MSG‑tiedostojen lukeminen — Lataa ja tarkastele MSG‑tiedostoja
- EML‑muunnos — Muunna formaattien välillä
- CFB‑säiliöt — Alhaisen tason binäärisäiliön käyttö