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:

PropertyDescription
SubjectMesaj konusu
BodyDüz metin gövdesi
BodyHtmlHTML gövdesi
SenderNameGönderenin görünen adı
SenderEmailAddressGönderen e-posta adresi
DisplayToTo alıcıları görüntüleme dizesi
DisplayCcCc alıcıları görüntüleme dizesi
DisplayBccBcc alıcıları görüntüleme dizesi
InternetMessageIdRFC 5322 Mesaj-ID’si
MessageDeliveryTimeTeslim zaman damgası
TransportMessageHeadersHam RFC 5322 başlıkları
AttachFilenameKısa ek dosya adı
AttachLongFilenameUzun ek dosya adı
AttachMimeTagEk MIME türü
AttachContentIdEk Content-ID

Mülk Tipi Kodları

PropertyTypeCode enum’ı MAPI tip kodlarını eşler:

TypeDescription
PtypStringUnicode dizesi
PtypString8ANSI dizesi
PtypInteger3232-bit tamsayı
PtypInteger6464-bit tamsayı
PtypBooleanBoolean
PtypTimeDateTime (FILETIME)
PtypBinaryByte dizisi
PtypGuidGUID

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

 Türkçe