Mbox 스토리지 파일

이 문서에서는 mbox 형식을 살펴보고 mbox 파일 읽기를 시작하는 데 도움이 되는 코드 스니펫을 제공합니다. mbox 파일을 구문 분석하고 파일에 포함된 메시지를 보고 저장하는 방법을 배웁니다.

Mbox 형식이란 무엇입니까?

mbox 형식은 이메일 메시지를 저장하는 데 널리 사용되는 파일 형식입니다. 오랜 역사를 가지고 있으며 Thunderbird, Apple Mail 등을 포함하여 널리 사용되는 여러 이메일 클라이언트에서 지원됩니다. mbox 형식에서는 여러 이메일 메시지가 일반 텍스트로 단일 파일에 저장되어 이메일 데이터 보관 및 전송에 편리합니다.

mbox 형식에는 다양한 변형이 있으며 각각 고유한 구현 세부 정보가 있습니다. 흔히 볼 수 있는 mbox 형식에는 mboxrd, mboxo, mboxcl, mboxcl2가 있습니다. 이러한 변형은 주로 메시지 구분 기호 및 메타데이터와 같은 특정 측면을 처리하는 방식에서 다릅니다. 이메일 데이터의 호환성 및 구문 분석에 영향을 줄 수 있으므로 mbox 파일로 작업할 때 이러한 차이점을 인식하는 것이 중요합니다.

몇 가지 이메일 클라이언트와 이들이 mbox 형식을 활용하는 방법을 자세히 살펴보겠습니다.

  • Thunderbird: Thunderbird는 mbox 형식을 사용하여 이메일 메시지를 저장하는 인기 있는 오픈 소스 이메일 클라이언트입니다. 확장자가 “.mbox"인 단일 mbox 파일에 폴더의 모든 메시지를 저장합니다. Thunderbird는 사용자의 사서함 내 각 폴더에 대해 별도의 mbox 파일을 생성하여 이메일 데이터를 쉽게 관리하고 백업할 수 있습니다.

  • Apple Mail: macOS 및 iOS 장치의 기본 이메일 클라이언트인 Apple Mail도 mbox 형식을 채택합니다. 각 사서함 폴더를 별도의 mbox 파일로 저장하여 Apple Mail 설치 간에 이메일 데이터를 쉽게 마이그레이션하거나 전송할 수 있습니다. Apple Mail mbox 파일은 일반적으로 확장자가 “.mbox” 또는 “.mbox.plist"입니다.

  • Eudora: 과거에 널리 사용되었던 이메일 클라이언트인 Eudora는 mbox 형식을 사용하여 이메일 메시지를 저장했습니다. “Eudora 사서함 형식"으로 알려진 약간 수정된 mbox 형식을 사용했습니다. Eudora 사서함 형식은 레이블 및 상태 플래그와 같은 Eudora 고유의 추가 기능과 메타데이터를 통합했습니다.

이들은 mbox 형식을 사용하는 이메일 클라이언트의 몇 가지 예일 뿐입니다. 프로그래밍 방식으로 mbox 파일로 작업할 때 mbox 형식과 다른 이메일 클라이언트에서의 사용법을 이해하는 것이 이메일 데이터의 호환성과 정확한 구문 분석을 보장하는 데 도움이 되므로 필수적입니다.

Mbox 파일을 읽기 위한 .NET API

C#에서 mbox 파일로 작업하려면 Aspose.Email for .NET을 사용합니다. 이 강력하고 기능이 풍부한 라이브러리는 mbox 파일 읽기, 메시지 추출 및 이메일 데이터 조작을 포함하여 이메일 처리를 위한 광범위한 기능을 제공합니다. .NET용 Aspose.Email이 위에서 언급한 형식을 포함하여 다양한 mbox 형식에 대한 포괄적인 지원을 제공한다는 점은 주목할 가치가 있습니다. 이를 통해 특정 mbox 구현 세부 사항에 관계없이 서로 다른 이메일 클라이언트의 mbox 파일로 원활하게 작업할 수 있습니다. API의 기능을 활용하려면 다음 명령을 사용하여 DLL을 다운로드하거나 NuGet에서 설치할 수 있습니다.

PM> Install-Package Aspose.Email

Mbox 파일 열기

이제 mbox 형식과 다양한 이메일 클라이언트에서의 사용법을 더 잘 이해했으므로 Aspose.Email을 사용하여 mbox 파일 작업의 기능과 사례를 살펴보겠습니다. mbox 파일 구문 분석을 시작하려면 파일을 열어야 합니다. 다음은 mbox 파일을 여는 단계입니다.

  • 먼저 MboxLoadOptions 인스턴스를 생성하여 mbox 파일을 로드하기 위해 원하는 옵션을 지정합니다.

  • 그런 다음 LeaveOpen를 false로 설정하여 읽은 후 mbox 파일을 자동으로 닫고 Encoding.UTF8을 기본 텍스트 인코딩으로 지정합니다.

  • 마지막으로 CreateReader 정적 메소드를 호출하고 소스 MBOX 파일 이름과 MboxLoadOptions 인스턴스를 전달하여 MboxStorageReader 클래스의 인스턴스를 생성합니다.

단계는 다음 코드 스니펫에 표시됩니다.

var mboxLoadOptions = new MboxLoadOptions
{
    LeaveOpen = false,
    PreferredTextEncoding = Encoding.UTF8
};

var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions);

메시지 나열

mbox 파일을 열면 저장된 메시지에 대한 정보를 검색할 수 있습니다. 다음 코드 스니펫은 mbox 파일의 메시지를 나열하는 두 가지 접근 방식을 보여줍니다.

방법 1: EnumerateMessageInfo 메서드 사용

MboxStorageReader 클래스의 EnumerateMessageInfo 메서드는 메시지를 반복하고 제목, 필드 시작, 끝, 날짜와 같은 기본 메시지 정보를 보는 데 사용됩니다. 또한 나중에 전체 메시지 내용을 읽는 데 사용할 수 있는 메시지 식별자(항목 ID)를 반환합니다. 이 접근 방식에는 다음과 같은 특징이 있습니다.

  • 성능: 이 접근 방식은 기본 메시지 정보만 읽고 보기 때문에 두 번째 접근 방식에 비해 성능이 더 좋습니다. 반복하는 동안 전체 메시지 콘텐츠를 구문 분석하고 로드하는 오버헤드를 방지합니다.

  • 효율성: 필요한 정보만 가져와서 메모리 소비와 처리 시간을 최소화합니다. 이는 수많은 메시지가 포함된 대용량 mbox 파일을 처리할 때 특히 유용합니다.

그러나 이 접근 방식을 사용하면 초기 반복 중에 전체 메시지 콘텐츠가 로드되지 않는다는 점에 유의해야 합니다. 대신 필수 세부 정보만 가져오므로 초기 처리 속도가 빨라집니다.

다음 코드 스니펫은 EnumerateMessageInfo 메서드와 해당 정보 검색을 사용하여 메시지를 반복하는 프로세스를 보여줍니다.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        Console.WriteLine(messageInfo.Subject);
        Console.WriteLine(messageInfo.From);
        Console.WriteLine(messageInfo.To);
        Console.WriteLine(messageInfo.Date);
    }
}

이렇게 하면 제목, 보낸 사람, 받는 사람 및 날짜와 같은 속성에 액세스하여 관련 세부 정보를 표시할 수 있습니다.

접근법 2: EnumerateMessages 메서드 사용

두 번째 방법은 EnumerateMessages 메서드를 사용하여 mbox 파일에 포함된 MailMessage 인스턴스를 직접 반복하는 것입니다. 이 접근 방식은 각 반복 중에 전체 메시지 콘텐츠를 읽고 로드하여 전체 이메일 정보에 즉시 액세스할 수 있습니다. 다음은 이 접근 방식의 몇 가지 주요 측면입니다.

  • 완전성: 첫 번째 접근 방식과 달리 이 방법을 사용하면 본문, 첨부 파일, 헤더 및 기타 부분을 포함한 전체 메시지 콘텐츠에 액세스하고 처리할 수 있습니다. 반복하는 동안 전체 이메일 데이터에 대한 포괄적인 액세스를 제공합니다.

  • 편의성: 이 접근 방식은 각 메시지를 별도의 파일에 저장하는 것과 같이 전체 메시지에 대한 작업을 수행하려는 경우에 유용합니다(예시 참조). 각 반복에서 전체 메시지 콘텐츠를 로드하여 프로세스를 단순화하여 후속 조회 없이 원하는 작업을 수행할 수 있습니다.

그러나 각 반복 중에 전체 메시지 콘텐츠를 로드하면 성능에 영향을 줄 수 있으며, 특히 큰 mbox 파일이나 상당한 수의 메시지를 처리할 때 이를 고려하는 것이 중요합니다. 전체 메시지 콘텐츠를 로드하는 데 필요한 추가 처리 시간은 두 접근 방식 중에서 선택할 때 고려해야 할 장단점이 될 수 있습니다.

다음 코드 스니펫은 EnumerateMessages 메서드를 사용하여 메시지를 반복하고 전체 메시지 내용을 검색하는 과정을 보여줍니다.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var eml in mbox.EnumerateMessages())
    {
        eml.Save($@"{eml.Subject}.eml");
    }
}

이렇게 하면 예제와 같이 별도의 .eml 파일에 저장하는 등 각 메시지에 대해 다양한 작업을 수행할 수 있습니다.

궁극적으로 이러한 접근 방식 간의 선택은 특정 사용 사례 및 요구 사항에 따라 다릅니다. 기본 메시지 정보에 빠르게 액세스하고 특정 메시지에 대한 추가 작업을 수행해야 하는 경우 첫 번째 접근 방식이 더 나은 성능을 제공합니다. 반면에 전체 메시지 콘텐츠에 즉시 액세스해야 하고 모든 메시지에 대한 작업을 한 번에 수행하려는 경우 두 번째 접근 방식은 약간 낮은 성능을 희생시키면서 편리함을 제공합니다.

특정 요구 사항을 평가하고 시나리오에 더 적합한 접근 방식을 결정할 때 mbox 파일의 크기, 메시지 수 및 수행하려는 작업과 같은 요소를 고려하는 것이 중요합니다.

메시지 읽기

이전 섹션에서는 메시지를 나열하는 방법에 대해 설명했습니다. 이제 MessageInfo를 열거하는 첫 번째 접근 방식에서 파생될 수 있는 문자열 식별자를 사용하여 개별 메시지를 읽는 방법을 살펴보겠습니다.

EnumerateMessageInfo 메서드를 사용하여 메시지를 나열할 때 각 메시지는 단일 mbox 파일 내의 고유 식별자와 연결됩니다. 일반적으로 문자열로 표시되는 이 식별자는 MboxMessageInfo 개체의 EntryId 속성에서 얻을 수 있습니다.

메시지 식별자를 얻은 후에는 이를 사용하여 다음 단계를 통해 전체 메시지 내용을 볼 수 있습니다.

  • 추출된 메시지를 로드하기 위해 원하는 옵션을 지정하기 위해 EmlLoadOptions 인스턴스를 생성합니다.
  • 포함된 메시지 형식 및 TNEF 첨부 파일을 보존할 수 있습니다.
  • foreach 루프 내에서 해당 메시지의 고유 식별자를 나타내는 각 MboxMessageInfo 개체의 EntryId 속성에 액세스합니다.
  • 그런 다음 이 식별자를 MboxStorageReader 클래스의 ExtractMessage 메서드와 함께 사용하여 전체 메시지를 MailMessage 개체로 검색합니다.
  • 마지막으로 메시지를 별도의 .eml 파일에 저장하는 등 메시지에 대해 원하는 작업을 수행할 수 있습니다.

아래 코드 스니펫은 문자열 식별자를 사용하여 개별 메시지를 읽는 방법을 보여줍니다.

var emlLoadOptions = new EmlLoadOptions
{
    PreserveEmbeddedMessageFormat = true,
    PreserveTnefAttachments = true
};

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        var eml = mbox.ExtractMessage(messageInfo.EntryId, emlLoadOptions);
        eml.Save($@"{eml.Subject}.eml");
    }
}

MessageInfo를 열거하는 첫 번째 접근 방식에서 얻은 메시지 식별자를 활용하여 특정 요구 사항에 따라 개별 메시지를 효율적으로 읽을 수 있습니다.

이 접근 방식을 사용하면 관심 있는 메시지를 선택적으로 읽고 처리하면서 다른 메시지는 건너뛸 수 있다는 점은 주목할 가치가 있습니다. 이러한 유연성은 불필요한 처리를 최소화하고 전반적인 효율성을 향상시키기 때문에 상당한 수의 메시지가 포함된 대용량 mbox 파일을 처리할 때 특히 유용합니다.

메시지 식별자는 단일 mbox 파일 내에서 고유합니다. 여러 mbox 파일에서 메시지로 작업해야 하는 경우 식별자와 해당 파일 간의 매핑을 유지 관리해야 합니다.

고유한 문자열 식별자를 사용하여 개별 메시지를 읽을 수 있는 기능을 통해 mbox 파일을 보다 효과적으로 제어하고 유연하게 처리할 수 있으며 원하는 이메일 콘텐츠를 효과적으로 추출하고 조작할 수 있습니다.

유틸리티 기능

Aspose.Email 라이브러리는 mbox 파일로 작업할 때 편리하게 사용할 수 있는 몇 가지 유틸리티 기능을 제공합니다. 다음은 몇 가지 예입니다.

mbox에 저장된 총 항목 수 가져오기

GetTotalItemsCount 메서드를 사용하여 mbox 파일에 저장된 총 항목 수를 쉽게 볼 수 있습니다. 이는 전자 메일 컬렉션의 크기를 추적하는 데 유용할 수 있습니다. 이를 달성하려면 다음 코드 스니펫을 사용하십시오.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    var itemsCount = mbox.GetTotalItemsCount();
}

한 번의 반복으로 읽은 데이터 크기 가져오기

반복 중에 CurrentDataSize 속성에 액세스하면 한 번의 반복에서 읽은 데이터의 크기를 얻을 수 있습니다. 이는 성능 최적화 또는 진행 상황 추적에 유용한 정보가 될 수 있습니다. 이를 달성하려면 다음 코드 스니펫을 사용하십시오.

using (var mbox = MboxStorageReader.CreateReader(fileName, mboxLoadOptions))
{
    foreach (var messageInfo in mbox.EnumerateMessageInfo())
    {
        var messageSize = mbox.CurrentDataSize;
    }
}

결론

이 기사에서는 mbox 형식을 살펴보고 C# 프로젝트에서 mbox 파일 작업을 위한 강력한 도구인 Aspose.Email for .NET 라이브러리를 소개했습니다. mbox 파일을 여는 방법, 메시지를 구문 분석 및 보는 방법, 일부 유틸리티 기능을 소개했습니다. 이 지식과 제공된 코드 스니펫으로 무장하면 이제 프로그래밍 작업에서 mbox 파일을 쉽게 처리할 수 있습니다. 문서를 사용하여 Aspose.Email의 다른 기능을 탐색할 수 있습니다. 또한 포럼에 쿼리를 게시할 수 있습니다.

또한보십시오