Mbox 스토리지 파일

이 문서의 주요 목적은 mbox 형식을 자세히 알아보고 mbox 파일을 읽는 과정을 지원할 수 있는 코드를 제공하는 것입니다. mbox 파일을 구문 분석하는 방법과 파일에 포함된 메시지에 액세스하고 보고 저장하는 방법에 대한 지식을 얻을 수 있습니다.

Mbox 형식 정보

mbox 형식은 긴 역사와 전자 메일 메시지 저장을 위한 표준화된 형식으로 폭넓게 수용되기 때문에 의미가 있습니다. 여러 이메일 메시지를 연결하여 단일 파일에 저장할 수 있는 일반 텍스트 파일 형식입니다. 이 형식의 단순성과 다양한 이메일 클라이언트 및 시스템 간의 호환성으로 인해 이메일 데이터를 보관하고 전송하는 데 널리 사용됩니다. 또한 mbox 형식은 발신자, 수신자, 제목 및 타임스탬프와 같은 필수 메타데이터를 유지하여 메시지의 무결성을 유지합니다.

이 형식과 호환되는 가장 인기 있는 이메일 클라이언트는 다음과 같습니다.

  • Thunderbird - mbox 형식을 사용하여 이메일 메시지를 저장하는 널리 사용되는 오픈 소스 이메일 클라이언트입니다. 확장자가 “.mbox"인 단일 파일에 폴더의 모든 메시지를 저장합니다. 사용자의 편의와 관리 용이성을 위해 사서함 내 폴더별로 별도의 파일이 생성됩니다. 사용자는 mbox 파일을 원활하게 가져오고 내보낼 수 있으므로 Thunderbird와 다른 mbox 호환 응용 프로그램 간에 이메일 데이터를 쉽게 마이그레이션할 수 있습니다.

  • Apple Mail - macOS 및 iOS 장치의 기본 이메일 클라이언트로 mbox 형식에 대한 기본 지원을 제공합니다. 각 사서함 폴더를 별도의 파일로 저장하여 사용자가 Apple Mail 내에서 mbox 파일에 쉽게 액세스, 가져오기 또는 전송할 수 있습니다. Apple Mail 파일은 일반적으로 “.mbox” 또는 “.mbox.plist” 확장자로 저장됩니다.

  • Evolution - 풍부한 기능을 갖춘 Linux용 이메일 및 개인 정보 관리 애플리케이션은 mbox 형식도 지원합니다. 이를 통해 사용자는 mbox 파일을 가져올 수 있으므로 전자 메일 데이터를 Evolution의 포괄적인 플랫폼에 원활하게 통합할 수 있습니다.

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

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

Mbox 파일을 읽는 Python API

Aspose.Email for Python 라이브러리를 사용하면 Python에서 mbox 파일로 작업하는 것이 쉽습니다. 이 강력하고 기능이 풍부한 API는 mbox 파일 읽기, 메시지 추출 및 이메일 데이터 조작 기능과 같은 이메일 처리를 위한 광범위한 기능 세트를 제공합니다.

Python용 Aspose.Email은 앞에서 언급한 형식을 포함하여 다양한 mbox 형식에 대한 포괄적인 지원도 제공한다는 점을 언급하는 것이 중요합니다. 즉, mbox 형식의 특정 구현 세부 사항에 관계없이 다른 이메일 클라이언트에서 이러한 파일로 원활하게 작업할 수 있습니다. API의 기능을 활용하려면 DLL을 다운로드하거나 다음 명령을 사용하여 PyPI에서 설치할 수 있습니다.

> pip install Aspose.Email-for-Python-via-NET

Mbox 파일 열기

mbox 형식의 파일 작업을 시작하려면 먼저 파일을 열어야 합니다. Aspose.Email 라이브러리가 도움이 될 것입니다.

우리 코드에서는 아래에 설명된 단계를 따를 것입니다.

  • 코드는 Aspose.Email 라이브러리에서 필요한 모듈인 MboxStorageReaderMboxLoadOptions 클래스를 가져오는 것으로 시작합니다.

  • 그런 다음 MboxLoadOptions의 인스턴스를 생성하여 원하는 파일 로드 옵션을 지정합니다.

  • 그런 다음 leaveopen을 False로 설정하여 파일을 읽은 후 닫아야 함을 나타내고 UTF8을 선호하는 텍스트 인코딩으로 지정합니다.

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

다음 코드 스니펫은 mbox 파일을 여는 방법을 보여줍니다.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

mbox_reader = MboxStorageReader.create_reader(file_name, mbox_load_options)

Mbox 파일의 메시지 나열

파일이 열렸으므로 저장된 메시지를 탐색할 수 있습니다. 아래 코드 스니펫은 mbox 파일의 메시지를 나열하는 두 가지 접근 방식을 나타냅니다.

접근법 1: EnumerateMessageInfo 메서드

mbox 파일의 메시지를 나열하는 첫 번째 접근 방식은 MboxStorageReader 클래스의 enumeratemessageinfo 메서드를 사용하는 것입니다. 메시지를 반복하고 제목, 필드 시작, 종료 및 날짜와 같은 기본 메시지 정보를 봅니다. 또한 나중에 전체 메시지 내용을 읽는 데 사용되는 메시지 식별자(항목 ID)를 반환합니다. 이 접근 방식에는 다음과 같은 특징이 있습니다.

  • 성능: 반복 중에 메시지 본문을 구문 분석하고 로드하지 않고 기본 메시지 정보를 읽고 보는 데 중점을 두기 때문에 다른 접근 방식에 비해 빠릅니다.

  • 효율성: 기본 정보만 대상으로 하여 메모리 소비 및 처리 시간을 최소화합니다. 많은 메시지가 포함된 대용량 파일을 처리해야 할 때 특히 유용합니다.

mbox 파일에서 메시지를 읽고 나열하고 보려면 다음 단계를 따르십시오.

  • Aspose.Email 라이브러리에서 필요한 모듈을 가져옵니다: MboxStorageReaderMboxLoadOptions 클래스.

  • MboxLoadOptions 클래스의 인스턴스를 만듭니다. 이 개체는 파일을 로드하기 위한 다양한 옵션을 보유합니다.

  • 개체의 속성을 구성합니다.

    • 파일을 읽은 후 닫으려면 leaveopen을 False로 설정하십시오.
    • 메시지 내용에 대해 원하는 텍스트 인코딩을 지정하려면 preferredtextencoding을 ‘utf-8’로 설정하십시오.
  • MboxStorageReader 클래스의 MboxStorageReader.createrreader() 메서드로 파일을 엽니다.

  • 각 메시지에서 특정 세부 정보를 추출하는 mboxreader 객체의 enumeratemessageinfo() 메서드를 사용하여 파일의 각 메시지를 반복합니다. 이 예에서는 주제, 주소, 대상 및 날짜입니다.

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        print(message_info.subject)
        print(message_info.from_address)
        print(message_info.to)
        print(message_info.date)

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

접근법 2: EnumerateMessages 메서드

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

  • 완전성: 본문, 첨부 파일, 헤더 및 기타 부분을 포함한 전체 메시지 콘텐츠에 액세스하고 처리할 수 있습니다.

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

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for eml in mbox_reader.enumerate_messages():
        eml.save(f"{eml.subject}.eml")

각 반복에 대해 전체 메시지 내용을 로드하면 성능에 잠재적으로 영향을 미칠 수 있으며, 특히 크기가 큰 파일이나 상당한 수의 메시지를 처리할 때 주목할 가치가 있습니다. 따라서 상황에 가장 적합한 접근 방식을 결정할 때 특정 요구 사항을 평가하고 파일 크기, 메시지 수 및 수행하려는 작업과 같은 요소를 고려하는 것이 중요합니다.

Mbox 파일의 메시지 읽기

mbox 파일로 수행할 수 있는 또 다른 조작은 파일에 포함된 메시지를 읽는 것입니다. MessageInfo를 열거하는 첫 번째 접근 방식에서 파생된 문자열 식별자를 사용하여 이를 수행할 수 있습니다.

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

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

  • EmlLoadOptions의 인스턴스를 생성합니다. 이 개체는 EML 파일을 로드하기 위한 다양한 옵션을 보유합니다.
  • 속성을 구성합니다.
    • EML 파일 내에 포함된 메시지 형식을 유지하려면 preserveembeddedmessageformat을 True로 설정합니다.
    • EML 파일 내에서 TNEF 첨부 파일을 보존하려면 preservetnefattachments를 True로 설정하십시오.
  • MboxLoadOptions의 인스턴스를 생성합니다. 이 개체는 mbox 파일을 로드하기 위한 다양한 옵션을 보유합니다.
  • mboxloadoptions의 속성을 구성합니다.
    • 파일을 읽은 후 닫으려면 leaveopen을 False로 설정하십시오.
    • 메시지 내용에 대해 원하는 텍스트 인코딩을 지정하려면 preferredtextencoding을 ‘utf-8’로 설정하십시오.
  • MboxStorageReader.createrreader() 메서드로 파일을 엽니다.
  • foreach 루프 내에서 해당 메시지의 고유 식별자를 나타내는 각 MboxMessageInfo 개체의 EntryId 속성에 액세스합니다.
  • 그런 다음 이 식별자를 MboxStorageReader 클래스의 ExtractMessage 메서드와 함께 사용하여 전체 메시지를 MailMessage 개체로 검색합니다.
  • 마지막으로 메시지를 별도의 .eml 파일에 저장하는 등 메시지에 대해 원하는 작업을 수행할 수 있습니다.

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

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions
from aspose.email import EmlLoadOptions

eml_load_options = EmlLoadOptions()
eml_load_options.preserve_embedded_message_format = True
eml_load_options.preserve_tnef_attachments = True

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        eml = mbox_reader.extract_message(message_info.entry_id, eml_load_options)
        eml.save(f"{eml.subject}.eml")

이 접근 방식의 중요한 이점은 다른 메시지를 무시하고 특정 메시지를 선택적으로 읽고 처리할 수 있다는 것입니다. 이러한 유연성은 많은 수의 메시지가 포함된 대용량 파일을 처리할 때 특히 유용합니다. 원하는 메시지만 선택적으로 처리하여 불필요한 계산을 최소화하여 전체적인 효율성을 높입니다.

메시지 식별자가 단일 파일 내에서 고유하다는 것을 이해하는 것이 중요합니다. 따라서 여러 mbox 파일에서 메시지로 작업할 때 이러한 식별자와 해당 파일 간의 매핑을 유지 관리해야 합니다.

유틸리티 기능

Aspose.Email 라이브러리는 mbox 파일 작업을 향상시키는 여러 유틸리티 기능을 제공합니다. 그들 중 몇 가지를 고려해 봅시다:

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

mbox 파일에 저장된 총 항목(메시지) 수를 결정하는 간단한 방법이 있습니다. gettotalitemscount() 메서드를 사용하여 파일에 있는 항목(메시지)의 총 개수를 검색합니다.

다음 코드는 파일에 있는 항목(메시지)의 총 개수를 가져옵니다.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
    items_count = mbox_reader.get_total_items_count()

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

단일 반복 동안 읽은 데이터의 크기를 얻으려면 mboxreader 객체의 currentdatasize 속성에 액세스하여 현재 반복에서 읽고 있는 데이터(메시지)의 크기를 검색할 수 있습니다.

다음 코드는 파일의 각 메시지를 반복합니다. 각 반복 동안 현재 읽은 메시지의 크기를 얻습니다.

from aspose.email.storage.mbox import MboxStorageReader, MboxLoadOptions

mbox_load_options = MboxLoadOptions()
mbox_load_options.leave_open = False
mbox_load_options.preferred_text_encoding = 'utf-8'

with MboxStorageReader.create_reader(file_name, mbox_load_options) as mbox_reader:
   for message_info in mbox_reader.enumerate_message_info():
        message_size = mbox_reader.current_data_size

결론

이 기사에서는 이메일 메시지를 저장하기 위해 표준화되고 널리 사용되는 형식인 mbox를 살펴보았습니다. 다양한 이메일 클라이언트 및 시스템에 걸친 단순성과 호환성으로 인해 이메일 데이터 보관 및 전송에 널리 사용됩니다. 변형을 포함한 형식은 이메일 데이터를 쉽게 읽고, 추출하고, 조작할 수 있는 강력한 Aspose.Email for Python 라이브러리에 의해 지원됩니다. 간단한 코드 스니펫과 코드 단계는 mbox 파일에서 메시지를 열고 나열하고 보는 방법에 대한 포괄적이고 자세한 지침을 제공했습니다.

문서를 사용하여 Aspose.Email의 다른 기능을 탐색할 수 있습니다. 또한 포럼에 쿼리를 게시할 수 있습니다.

또한보십시오