MAPI Özellikleri
MAPI Özellikleri
Her MSG dosyası, veri depolamasını MAPI özellikleri olarak saklar — bir özellik kimliği ve tip kodu ile tanımlanan etiketli anahtar‑değer çiftleri. Aspose.Email FOSS for .NET, bu özelliklere MapiMessage, MapiPropertyCollection ve CommonMessagePropertyId enumu aracılığıyla doğrudan erişim sağlar.
Özellikleri Okuma
Kullanım Kolaylığı Özellikleri
MapiMessage en yaygın özellikleri tiplenmiş C# özellikleri olarak gösterir:
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?Ham Özellik Erişimi
Kolaylık alanları olarak ortaya çıkarılmayan özellikler için, GetPropertyValue kullanın:
// 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}");Tüm Özellikleri Yinele
// 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}");
}Yazma Özellikleri
Yeni Bir Mesajda Özellikleri Ayarla
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));Doğrudan Koleksiyon Erişimi
MapiPropertyCollection, Add, Set, Get ve Remove sağlar:
// 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);Ortak Özellik Kimlikleri
CommonMessagePropertyId enum’ı, sıkça kullanılan MAPI özellik kimlikleri için adlandırılmış sabitler sağlar:
| Property | Description |
|---|---|
Subject | Mesaj konusu |
Body | Düz metin gövdesi |
BodyHtml | HTML gövdesi |
SenderName | Gönderenin görünen adı |
SenderEmailAddress | Gönderen e-posta adresi |
DisplayTo | To alıcıları görüntüleme dizesi |
DisplayCc | Cc alıcıları görüntüleme dizesi |
DisplayBcc | Bcc alıcıları görüntüleme dizesi |
InternetMessageId | RFC 5322 Mesaj-ID’si |
MessageDeliveryTime | Teslim zaman damgası |
TransportMessageHeaders | Ham RFC 5322 başlıkları |
AttachFilename | Kısa ek dosya adı |
AttachLongFilename | Uzun ek dosya adı |
AttachMimeTag | Ek MIME türü |
AttachContentId | Ek Content-ID |
Mülk Tipi Kodları
PropertyTypeCode enum’ı MAPI tip kodlarını eşler:
| Type | Description |
|---|---|
PtypString | Unicode dizesi |
PtypString8 | ANSI dizesi |
PtypInteger32 | 32-bit tamsayı |
PtypInteger64 | 64-bit tamsayı |
PtypBoolean | Boolean |
PtypTime | DateTime (FILETIME) |
PtypBinary | Byte dizisi |
PtypGuid | GUID |
Ek Özellikleri
Her MapiAttachment ayrıca kendi Properties koleksiyonuna sahiptir:
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}");
}Ayrıca bakınız
- Reading MSG Files — MSG dosyalarını yükleyin ve inceleyin
- EML Conversion — Biçimler arasında dönüştürme
- CFB Containers — Düşük seviyeli ikili konteyner erişimi