MAPI 속성

MAPI 속성

모든 MSG 파일은 MAPI 속성—속성 ID와 유형 코드로 식별되는 태그된 키‑값 쌍—으로 데이터를 저장합니다. Aspose.Email FOSS for .NET은 MapiMessage, MapiPropertyCollectionCommonMessagePropertyId 열거형을 통해 이러한 속성에 직접 접근할 수 있게 합니다.


속성 읽기

편리성 속성

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

직접 컬렉션 액세스

MapiPropertyCollectionAdd, Set, GetRemove을 제공합니다:

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

공통 속성 ID

CommonMessagePropertyId 열거형은 자주 사용되는 MAPI
속성 ID에 대한 명명된 상수를 제공합니다:

PropertyDescription
Subject메시지 제목
Body일반 텍스트 본문
BodyHtmlHTML 본문
SenderName발신자 표시 이름
SenderEmailAddress발신자 이메일 주소
DisplayTo수신자(To) 표시 문자열
DisplayCc참조(Cc) 수신자 표시 문자열
DisplayBcc숨은 참조(Bcc) 수신자 표시 문자열
InternetMessageIdRFC 5322 메시지-ID
MessageDeliveryTime전달 타임스탬프
TransportMessageHeaders원시 RFC 5322 헤더
AttachFilename짧은 첨부 파일 이름
AttachLongFilename긴 첨부 파일 이름
AttachMimeTag첨부 파일 MIME 유형
AttachContentId첨부 파일 Content-ID

속성 유형 코드

PropertyTypeCode 열거형은 MAPI 유형 코드를 매핑합니다:

유형설명
PtypStringUnicode 문자열
PtypString8ANSI 문자열
PtypInteger3232비트 정수
PtypInteger6464비트 정수
PtypBoolean불리언
PtypTimeDateTime (FILETIME)
PtypBinary바이트 배열
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}");
}

관련 항목

 한국어