
OLM은 Microsoft Outlook for Mac이 로컬 데이터를 저장하는 데 사용하는 파일 형식입니다. OLM은 이메일, 첨부 파일, 노트, 캘린더 데이터, 연락처, 작업, 기록 등과 같은 로컬 데이터를 포함합니다. OLM 파일은 Outlook for Mac에서 사용됩니다. Windows용 Outlook은 이를 열거나 접근할 수 없습니다. Windows용 Outlook 버전은 데이터를 저장하기 위해 PST 파일 형식만 지원합니다. 이 기사에서는 C# 애플리케이션에서 OLM 형식 파일을 열고 읽는 방법에 대해 설명합니다.
C# .NET API로 OLM 파일 읽기
Aspose.Email for .NET은 이메일 애플리케이션을 구현하기 위한 다양한 기능을 제공하는 강력한 API입니다. 또한 OLM 파일과 MBOX, PST/OST와 같은 다른 메일 저장 형식을 읽을 수 있습니다. 라이브러리는 NuGet을 통해 설치하거나 다운로드하여 DLL을 사용할 수 있습니다.
PM> Install-Package Aspose.Email
OLM 형식 파일 열기
Aspose.Email API는 OLM 형식 파일을 여는 두 가지 방법을 제공합니다:
이 방법들 사이에는 동작의 차이가 있습니다. 아래 섹션을 참조하십시오.
생성자에 의한 파일 열기
파일을 열려면 OlmStorage 클래스의 생성자를 호출하고 전체 파일 이름이나 스트림을 인수로 전달해야 합니다:
var fileName = "MyStorage.olm"; | |
var olm = new OlmStorage(fileName); |
정적 메서드 FromFile을 사용한 파일 열기
파일을 열려면 정적 메서드 FromFile을 사용하고 전체 파일 이름이나 스트림을 인수로 전달해야 합니다:
var fileName = "MyStorage.olm"; | |
var olm = OlmStorage.FromFile(fileName); |
폴더 가져오기
생성자를 사용하여 파일을 열면 FolderHierarchy 속수에 접근할 수 있게 됩니다. 이는 OLM 파일에 존재하는 디렉토리 목록을 반환합니다. 목록의 각 OlmFolder 클래스 객체는 하위 폴더 목록을 반환하는 SubFolders 속성을 가지고 있습니다. 따라서 OLM의 모든 디렉토리에 접근할 수 있습니다.
아래 예제에서는 계층적인 순서로 모든 폴더 목록을 표시합니다:
using (var olm = new OlmStorage(fileName)) | |
{ | |
PrintAllFolders(olm.FolderHierarchy, string.Empty); | |
} | |
private void PrintAllFolders(List<OlmFolder> folderHierarchy, string indent) | |
{ | |
foreach (var folder in folderHierarchy) | |
{ | |
Console.WriteLine($"{indent}{folder.Name}"); | |
PrintAllFolders(folder.SubFolders, indent+"-"); | |
} | |
} |
FromFile 메서드를 사용하여 파일을 여는 경우 기본적으로 FolderHierarchy 속성이 초기화되지 않으며 null
을 반환합니다. 이 경우 GetFolders 메서드를 명시적으로 호출해야 합니다:
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folders = olm.GetFolders(); | |
} |
또한 이름으로 특정 폴더를 가져오는 것도 가능합니다. 이를 위해서는:
GetFolder 메서드를 호출합니다.
첫 번째 인수로 폴더 이름을 전달하고, 두 번째 매개변수로 폴더 검색 시 대소문자를 무시할지 여부를 나타내는 값을 전달합니다.
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
// get inbox folder by name | |
OlmFolder folder = olm.GetFolder("Inbox", true); | |
} |
이메일 목록
OlmFolder 클래스는 이메일 목록을 얻기 위한 다음과 같은 메서드를 가지고 있습니다:
EnumerateMessages는 폴더의 이메일을 반복합니다. 이 경우 각 반복은 이메일에 대한 짧은 정보를 제공하는 OlmMessageInfo 객체를 반환합니다.
EnumerateMapiMessages 또한 폴더의 이메일을 반복하지만, 이 경우 각 반복은 이메일 자체와 모든 속성을 나타내는 MapiMessage 객체를 반환합니다.
EnumerateMessages 메서드 사용
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
foreach (var messageInfo in folder.EnumerateMessages()) | |
{ | |
Console.WriteLine(messageInfo.Subject); | |
} | |
} |
EnumerateMapiMessages 메서드 사용
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
foreach (var msg in folder.EnumerateMapiMessages()) | |
{ | |
// save message in MSG format | |
msg.Save($"{msg.Subject}.msg"); | |
} | |
} |
기타 유용한 속성
또한 OlmFolder 클래스는 폴더 내 메시지의 존재 여부와 수를 반환하는 HasMessages 및 MessageCount 속성을 가지고 있습니다:
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
if (folder.HasMessages) | |
{ | |
Console.WriteLine($"Message count: {folder.MessageCount}"); | |
} | |
} |
이메일 추출
OlmStorage 클래스는 이메일을 추출할 수 있는 ExtractMapiMessage 메서드를 가지고 있습니다. 이 메서드는 OlmMessageInfo 객체를 받습니다.
using (var olm = OlmStorage.FromFile(fileName)) | |
{ | |
var folder = olm.GetFolder("Inbox", true); | |
foreach (var messageInfo in folder.EnumerateMessages()) | |
{ | |
if (messageInfo.Date == DateTime.Today) | |
{ | |
// Extracts today's messages form Inbox | |
var msg = olm.ExtractMapiMessage(messageInfo); | |
} | |
} | |
} |
결론
이 기사에서는 C#에서 OLM 파일을 읽는 방법을 배웠습니다. OLM 파일에서 폴더 목록을 가져오고 메시지를 추출하는 방법을 보았습니다. 또한 Aspose.Email for .NET에 대한 더 많은 정보는 문서를 참조하실 수 있습니다. 질문이나 요청은 포럼에 공유할 수 있습니다.