Ιδιότητες MAPI

Ιδιότητες MAPI

Κάθε αρχείο MSG αποθηκεύει δεδομένα ως ιδιότητες MAPI — ζευγάρια κλειδιού‑τιμής με ετικέτες που ταυτοποιούνται από αναγνωριστικό ιδιότητας και κωδικό τύπου. Το Aspose.Email FOSS for .NET παρέχει άμεση πρόσβαση σε αυτές τις ιδιότητες μέσω των MapiMessage, MapiPropertyCollection και του CommonMessagePropertyId enum.


Ανάγνωση Ιδιοτήτων

Ιδιότητες Ευκολίας

MapiMessage εκθέτει τις πιο κοινές ιδιότητες ως τυποποιημένες ιδιότητες C#:

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?

Ακατέργαστη Πρόσβαση Ιδιότητας

Για ιδιότητες που δεν εκτίθενται ως πεδία ευκολίας, χρησιμοποιήστε 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}");

Επανάληψη όλων των ιδιοτήτων

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

Ιδιότητες Γραφής

Ορισμός ιδιοτήτων σε νέο μήνυμα

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

Άμεση Πρόσβαση στη Συλλογή

MapiPropertyCollection παρέχει Add, Set, Get, και 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);

Κοινά Αναγνωριστικά Ιδιοτήτων

Η CommonMessagePropertyId enum παρέχει ονομαστικές σταθερές για συχνά χρησιμοποιούμενα IDs ιδιοτήτων MAPI:

PropertyDescription
SubjectΘέμα μηνύματος
BodyΣώμα απλού κειμένου
BodyHtmlΣώμα HTML
SenderNameΕμφανιζόμενο όνομα αποστολέα
SenderEmailAddressΔιεύθυνση email αποστολέα
DisplayToΕμφανιζόμενη συμβολοσειρά παραληπτών «Προς»
DisplayCcΕμφανιζόμενη συμβολοσειρά παραληπτών «Κοινοποίηση»
DisplayBccΕμφανιζόμενη συμβολοσειρά παραληπτών «Κρυφή κοινοποίηση»
InternetMessageIdRFC 5322 Message-ID
MessageDeliveryTimeΧρόνος παράδοσης
TransportMessageHeadersΑκατέργαστες κεφαλίδες RFC 5322
AttachFilenameΣύντομο όνομα αρχείου συνημμένου
AttachLongFilenameΜακρύ όνομα αρχείου συνημμένου
AttachMimeTagΤύπος MIME συνημμένου
AttachContentIdContent-ID συνημμένου

Κωδικοί Τύπων Ιδιοκτησίας

Η PropertyTypeCode enum αντιστοιχίζει τους κωδικούς τύπου MAPI:

ΤύποςΠεριγραφή
PtypStringUnicode συμβολοσειρά
PtypString8ANSI συμβολοσειρά
PtypInteger32ακέραιος 32-bit
PtypInteger64ακέραιος 64-bit
PtypBooleanBoolean
PtypTimeDateTime (FILETIME)
PtypBinaryΠίνακας byte
PtypGuidGUID

Ιδιότητες Συνημμένου

Κάθε MapiAttachment επίσης έχει τη δική του συλλογή 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}");
}

Δείτε επίσης

  • Reading MSG Files — Φόρτωση και επιθεώρηση αρχείων MSG
  • EML Conversion — Μετατροπή μεταξύ μορφών
  • CFB Containers — Πρόσβαση σε δυαδικά δοχεία χαμηλού επιπέδου
 Ελληνικά