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:

OminaisuusKuvaus
SubjectViestin aihe
BodyTekstirunko
BodyHtmlHTML-runko
SenderNameLähettäjän näyttönimi
SenderEmailAddressLähettäjän sähköpostiosoite
DisplayToVastaanottajien (To) näyttömerkkijono
DisplayCcKopio (Cc) -vastaanottajien näyttömerkkijono
DisplayBccPiilokopio (Bcc) -vastaanottajien näyttömerkkijono
InternetMessageIdRFC 5322 -viestin tunniste (Message-ID)
MessageDeliveryTimeToimituksen aikaleima
TransportMessageHeadersRaakat RFC 5322 -otsikot
AttachFilenameLyhyt liitetiedoston nimi
AttachLongFilenamePitkä liitetiedoston nimi
AttachMimeTagLiitteen MIME-tyyppi
AttachContentIdLiitteen Content-ID

Kiinteistön tyyppikoodit

PropertyTypeCode enum kartoittaa MAPI-tyyppikoodit:

TyyppiKuvaus
PtypStringUnicode-merkkijono
PtypString8ANSI-merkkijono
PtypInteger3232-bittinen kokonaisluku
PtypInteger6464-bittinen kokonaisluku
PtypBooleanBoolen
PtypTimeDateTime (FILETIME)
PtypBinaryTavu-taulukko
PtypGuidGUID

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

 Suomi