플랫폼 간 이동 시 **Outlook for Mac (OLM)**에서 널리 지원되는 형식인 MBOX(Thunderbird / Unix 메일함용)와 PST (Outlook for Windows)로 이메일 데이터를 마이그레이션하는 것은 일반적인 작업입니다. Microsoft Outlook for Mac은 이메일, 연락처, 캘린더 및 기타 항목을 저장하기 위해 OLM(Outlook for Mac Data File) 형식을 사용합니다. 그러나 이 데이터를 Windows 기반 환경이나 다른 이메일 클라이언트로 마이그레이션하려면 OLM 파일을 Thunderbird 및 Apple Mail과 같은 클라이언트에서 사용하는 MBOX 또는 Windows용 Outlook Personal Storage TablePST와 같은 보편적인 형식으로 변환해야 하는 경우가 많습니다.

이 기사에서는 C#을 사용하여 Aspose.Email for .NET으로 OLM 파일을 PST 및 MBOX 형식으로 변환하는 방법을 보여드립니다. 이 강력한 API는 복잡한 이메일 마이그레이션 작업을 프로그래밍 방식으로 단순화합니다. OLM 파일을 열고, 메시지를 추출하고, 폴더 계층 구조를 보존하며, 여러 플랫폼용 휴대용 이메일 아카이브를 생성하는 방법을 배우게 됩니다.

Aspose.Email for .NET를 사용한 변환

[Aspose.Email for .NET][]은 OLM, MBOX 및 PST를 포함한 다양한 이메일 형식을 다루는 포괄적인 기능을 제공합니다. 직관적인 API와 방대한 문서를 통해 복잡한 변환 작업을 간소화합니다. 아래에서는 C#을 사용하여 OLM을 MBOX 및 PST로 변환하는 단계를 살펴보겠습니다.

시작하려면 .NET 프로젝트에 Aspose.Email NuGet 패키지를 설치하십시오:

Install-Package Aspose.Email

이 패키지는 OLM, MBOX 및 PST 파일을 처리하는 데 필요한 모든 클래스를 포함합니다.

OLM을 MBOX로 변환

MBOX 형식은 이메일 메시지를 연결된 MIME 항목으로 저장하며, 일반적으로 오픈 소스 이메일 클라이언트에서 사용됩니다. 아래는 OLM 폴더의 모든 메시지를 MBOX 파일로 변환하는 간단하지만 효율적인 코드 예제입니다. 이 예제는 다음 API 멤버를 활용합니다:

단계

  1. 입력 OLM 파일과 출력 MBOX 파일에 대한 파일 경로를 정의합니다.
  2. OlmStorage.FromFile을 사용하여 OLM 파일을 엽니다.
  3. 지정된 출력 경로와 옵션을 사용하여 MboxrdStorageWriter로 MBOX 라이터를 생성합니다.
  4. 대소문자를 구분하지 않는 검색을 사용하여 OLM 파일에서 “Inbox” 폴더에 접근합니다.
  5. “Inbox” 폴더에 있는 모든 MAPI 메시지를 반복합니다.
  6. 각 MAPI 메시지를 표준 MailMessage 객체로 변환합니다.
  7. 변환된 각 메시지를 MBOX 파일에 기록합니다.

코드 샘플

var olmPath = @"C:\data\archive.olm";
var mboxPath = @"C:\data\output.mbox";

// Load OLM file using OlmStorage
using (var olm = OlmStorage.FromFile(olmPath))
using (var mboxWriter = new MboxrdStorageWriter(mboxPath, new MboxSaveOptions()))
{
    // Get the folder (case-insensitive example)
    var inbox = olm.GetFolder("Inbox", true);

// Iterate MAPI messages (returns MapiMessage objects)
    foreach (MapiMessage mapi in inbox.EnumerateMapiMessages())
    {
        // Convert to MailMessage and write to MBOX
        var mail = mapi.ToMailMessage(new MailConversionOptions());
        mboxWriter.WriteMessage(mail);
    }
}

Note:
폴더당 하나의 MBOX를 원한다면 각 OLM 폴더마다 별도의 writer를 생성하세요.
단일 아카이브를 선호한다면 위 코드 샘플에 표시된 대로 MboxrdStorageWriter 인스턴스를 재사용하고 WriteMessage를 반복 호출하십시오.

OLM을 PST로 변환

Outlook OLM 아카이브 파일을 Unicode PST 파일로 변환하고 폴더 구조와 메시지를 복사하려면 Aspose.Email for .NET을 사용합니다.

핵심 멤버

단계

  1. 소스 OLM 파일과 대상 PST 파일의 경로를 설정합니다.
  2. OLM 아카이브를 읽기 위해 열고, 쓰기를 위해 새 PST 파일을 생성합니다.
  3. OLM 아카이브에서 최상위 폴더를 가져옵니다.
  4. 지정된 폴더 이름에 대해 PST 내부에 일치하는 폴더를 찾거나 생성하는 도우미 함수를 정의합니다.
  5. 재귀 함수를 정의하여:
    • 각 OLM 폴더에 대해 해당 PST 폴더를 만들거나 가져옵니다.
    • OLM 폴더의 모든 메시지를 PST 폴더로 복사합니다.
    • 폴더 트리를 유지하기 위해 OLM 폴더의 각 하위 폴더에 대해 자신을 호출합니다.
  6. PST 루트 폴더를 부모로 사용하여 모든 최상위 OLM 폴더에 재귀 함수를 호출합니다.
  7. 새로운 PST 파일에 전체 폴더 계층과 메시지를 저장하고 MAPI 데이터를 보존합니다.

코드 샘플

var olmPath = @"C:\data\archive.olm";
var pstPath = @"C:\data\output.pst";

// Create a new PST file
using (var olm = OlmStorage.FromFile(olmPath))
using (var pst = PersonalStorage.Create(pstPath, FileFormatVersion.Unicode))
{
    // Get top-level folders in OLM
    var rootFolders = olm.GetFolders();

// Helper: map OlmFolder -> FolderInfo in PST by recursively creating subfolders
    FolderInfo GetOrCreatePstFolder(FolderInfo parentPstFolder, string folderName)
    {
        // Try to find existing subfolder (case-insensitive)
        foreach (var sub in parentPstFolder.GetSubFolders())
        {
            if (string.Equals(sub.DisplayName, folderName, StringComparison.OrdinalIgnoreCase))
                return sub;
        }

// Create new subfolder
        return parentPstFolder.AddSubFolder(folderName);
    }

// Recursive traversal
    void ProcessOlmFolder(OlmFolder olmFolder, FolderInfo pstParent)
    {
        // Create / get the corresponding PST folder
        var pstFolder = GetOrCreatePstFolder(pstParent, olmFolder.Name);

// Copy messages: OlmFolder.EnumerateMapiMessages returns MapiMessage instances
        foreach (var mapi in olmFolder.EnumerateMapiMessages())
        {
            // AddMessage preserves MAPI data into PST
            pstFolder.AddMessage(mapi);
        }

// Recurse into OLM subfolders (OlmFolder.SubFolders property)
        foreach (var child in olmFolder.SubFolders)
        {
            ProcessOlmFolder(child, pstFolder);
        }
    }

// Note: PST.RootFolder exists; create top-level folders under it.
    foreach (var top in rootFolders)
    {
        // Skip creating a duplicate for default PST root folder names if needed
        ProcessOlmFolder(top, pst.RootFolder);
    }
}

Important: 새로 만든 PST에는 기본적으로 Deleted Items 폴더가 이미 포함되어 있으므로 기본 폴더를 중복 생성하지 않도록 주의하십시오.

참고:

결론

이 문서에서는 Aspose.Email for .NET을 사용하여 C#에서 Outlook for Mac (OLM) 파일을 PST 및 MBOX 형식으로 변환하는 방법을 배웠습니다. OLM 아카이브를 열고 처리하며, 메시지를 추출하고, 폴더 계층 구조를 유지하면서 데이터를 새로운 메일 저장 형식으로 내보내는 방법을 살펴보았습니다. Aspose.Email API를 사용하면 개발자가 크로스 플랫폼 이메일 마이그레이션을 쉽게 자동화할 수 있어 Outlook for Mac, Outlook for Windows 및 Thunderbird와 같은 오픈 소스 클라이언트 간의 호환성을 보장합니다.

자세한 내용은 Aspose.Email 문서API 참조를 확인하십시오.

추가 리소스

관련 항목