Ιδιότητες 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:
| Property | Description |
|---|---|
Subject | Θέμα μηνύματος |
Body | Σώμα απλού κειμένου |
BodyHtml | Σώμα HTML |
SenderName | Εμφανιζόμενο όνομα αποστολέα |
SenderEmailAddress | Διεύθυνση email αποστολέα |
DisplayTo | Εμφανιζόμενη συμβολοσειρά παραληπτών «Προς» |
DisplayCc | Εμφανιζόμενη συμβολοσειρά παραληπτών «Κοινοποίηση» |
DisplayBcc | Εμφανιζόμενη συμβολοσειρά παραληπτών «Κρυφή κοινοποίηση» |
InternetMessageId | RFC 5322 Message-ID |
MessageDeliveryTime | Χρόνος παράδοσης |
TransportMessageHeaders | Ακατέργαστες κεφαλίδες RFC 5322 |
AttachFilename | Σύντομο όνομα αρχείου συνημμένου |
AttachLongFilename | Μακρύ όνομα αρχείου συνημμένου |
AttachMimeTag | Τύπος MIME συνημμένου |
AttachContentId | Content-ID συνημμένου |
Κωδικοί Τύπων Ιδιοκτησίας
Η PropertyTypeCode enum αντιστοιχίζει τους κωδικούς τύπου MAPI:
| Τύπος | Περιγραφή |
|---|---|
PtypString | Unicode συμβολοσειρά |
PtypString8 | ANSI συμβολοσειρά |
PtypInteger32 | ακέραιος 32-bit |
PtypInteger64 | ακέραιος 64-bit |
PtypBoolean | Boolean |
PtypTime | DateTime (FILETIME) |
PtypBinary | Πίνακας byte |
PtypGuid | GUID |
Ιδιότητες Συνημμένου
Κάθε 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 — Πρόσβαση σε δυαδικά δοχεία χαμηλού επιπέδου