MAPI īpašības

MAPI īpašības

Katrs MSG fails saglabā datus kā MAPI īpašības — marķētas atslēga‑vērtība pāri, kas identificēti ar īpašības ID un tipa kodu. Aspose.Email FOSS for .NET nodrošina tiešu piekļuvi šīm īpašībām caur MapiMessage, MapiPropertyCollection un CommonMessagePropertyId enum.


Īpašību nolasīšana

Ērtības īpašības

MapiMessage atklāj visbiežāk izmantotās īpašības kā tipizētas C# īpašības:

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?

Neapstrādāta īpašības piekļuve

Īpašībām, kas nav pieejamas kā ērtības lauki, izmantojiet 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}");

Iterēt visas īpašības

// 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}");
}

Rakstīšanas īpašības

Iestatīt īpašības jaunam ziņojumam

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));

Tieša kolekcijas piekļuve

MapiPropertyCollection nodrošina Add, Set, Get un 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);

Kopējie īpašuma ID

CommonMessagePropertyId enum nodrošina nosauktus konstantus bieži izmantotām MAPI īpašību ID:

PropertyDescription
SubjectZiņas temats
BodyVienkāršā teksta ķermenis
BodyHtmlHTML ķermenis
SenderNameSūtītāja parādāmais vārds
SenderEmailAddressSūtītāja e-pasta adrese
DisplayToSaņēmēju “To” parādāmais virkne
DisplayCcSaņēmēju “Cc” parādāmais virkne
DisplayBccSaņēmēju “Bcc” parādāmais virkne
InternetMessageIdRFC 5322 ziņas ID
MessageDeliveryTimePiegādes laika zīmogs
TransportMessageHeadersNeapstrādātās RFC 5322 galvenes
AttachFilenameĪss pievienojuma faila nosaukums
AttachLongFilenameGarš pievienojuma faila nosaukums
AttachMimeTagPievienojuma MIME tips
AttachContentIdPievienojuma Content-ID

Īpašuma tipa kodi

PropertyTypeCode enum kartē MAPI tipa kodus:

TipsApraksts
PtypStringUnicode virkne
PtypString8ANSI virkne
PtypInteger3232‑bitu vesels skaitlis
PtypInteger6464‑bitu vesels skaitlis
PtypBooleanBūla vērtība
PtypTimeDatuma/laiks (FILETIME)
PtypBinaryBaitu masīvs
PtypGuidGUID

Pielikuma īpašības

Katram MapiAttachment arī ir sava Properties kolekcija:

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}");
}

Skatīt arī

 Latviešu