MAPI 속성
MAPI 속성
모든 MSG 파일은 MAPI 속성—속성 ID와 유형 코드로 식별되는 태그된 키‑값 쌍—으로 데이터를 저장합니다. Aspose.Email FOSS for .NET은 MapiMessage, MapiPropertyCollection 및 CommonMessagePropertyId 열거형을 통해 이러한 속성에 직접 접근할 수 있게 합니다.
속성 읽기
편리성 속성
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);공통 속성 ID
CommonMessagePropertyId 열거형은 자주 사용되는 MAPI
속성 ID에 대한 명명된 상수를 제공합니다:
| Property | Description |
|---|---|
Subject | 메시지 제목 |
Body | 일반 텍스트 본문 |
BodyHtml | HTML 본문 |
SenderName | 발신자 표시 이름 |
SenderEmailAddress | 발신자 이메일 주소 |
DisplayTo | 수신자(To) 표시 문자열 |
DisplayCc | 참조(Cc) 수신자 표시 문자열 |
DisplayBcc | 숨은 참조(Bcc) 수신자 표시 문자열 |
InternetMessageId | RFC 5322 메시지-ID |
MessageDeliveryTime | 전달 타임스탬프 |
TransportMessageHeaders | 원시 RFC 5322 헤더 |
AttachFilename | 짧은 첨부 파일 이름 |
AttachLongFilename | 긴 첨부 파일 이름 |
AttachMimeTag | 첨부 파일 MIME 유형 |
AttachContentId | 첨부 파일 Content-ID |
속성 유형 코드
PropertyTypeCode 열거형은 MAPI 유형 코드를 매핑합니다:
| 유형 | 설명 |
|---|---|
PtypString | Unicode 문자열 |
PtypString8 | ANSI 문자열 |
PtypInteger32 | 32비트 정수 |
PtypInteger64 | 64비트 정수 |
PtypBoolean | 불리언 |
PtypTime | DateTime (FILETIME) |
PtypBinary | 바이트 배열 |
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 — 저수준 바이너리 컨테이너 액세스