MAPI savybės

MAPI savybės

Kiekvienas MSG failas saugo duomenis kaip MAPI savybes — žymėtus raktų‑reikšmių poras, identifikuotas pagal
savybės ID ir tipo kodą. Aspose.Email FOSS for .NET suteikia tiesioginę prieigą prie šių savybių
per MapiMessage, MapiPropertyCollection ir CommonMessagePropertyId enum.


Savybių skaitymas

Patogumo savybės

MapiMessage pateikia dažniausiai pasitaikančias savybes kaip tipizuotas C# savybes:

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?

Neapdorota savybės prieiga

Savybėms, kurios nėra pateiktos kaip patogumo laukai, naudokite 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}");

Iteruoti visas savybes

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

Rašymo savybės

Nustatyti savybes naujame pranešime

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

Tiesioginė kolekcijos prieiga

MapiPropertyCollection suteikia Add, Set, Get ir 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);

Bendrių savybių ID

CommonMessagePropertyId enum suteikia pavadintus konstantus dažnai naudojamiems MAPI savybių ID:

PropertyDescription
SubjectŽinutės tema
BodyGrynojo teksto kūnas
BodyHtmlHTML kūnas
SenderNameSiuntėjo rodomas vardas
SenderEmailAddressSiuntėjo el. pašto adresas
DisplayToGavėjų rodomas eilutė
DisplayCcCc gavėjų rodomas eilutė
DisplayBccBcc gavėjų rodomas eilutė
InternetMessageIdRFC 5322 Message-ID
MessageDeliveryTimePristatymo laiko žyma
TransportMessageHeadersŽali RFC 5322 antraštės
AttachFilenameTrumpas priedo failo pavadinimas
AttachLongFilenameIlgas priedo failo pavadinimas
AttachMimeTagPriedo MIME tipas
AttachContentIdPriedo Content-ID

Turto tipų kodai

PropertyTypeCode enum susieja MAPI tipo kodus:

TipasAprašymas
PtypStringUnicode string
PtypString8ANSI string
PtypInteger3232-bit integer
PtypInteger6464-bit integer
PtypBooleanBoolean
PtypTimeDateTime (FILETIME)
PtypBinaryByte array
PtypGuidGUID

Priedo savybės

Kiekvienas MapiAttachment taip pat turi savo Properties kolekciją:

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

Žr. taip pat

 Lietuvių