MBOX 메시지 필터링 및 추출
메시지 필터링의 역할
대용량 MBOX 아카이브를 다룰 때 모든 메시지를 메모리로 로드하는 것은 비효율적이고 불필요할 수 있습니다. 대부분의 경우 개발자는 제목, 발신자, 수신자 또는 타임스탬프와 같은 기본 메타데이터만 스캔하면 됩니다:
- UI에 메시지 목록 표시
- 추출 전에 사용자 정의 필터 적용
- 보고서 또는 요약 생성
- 검색을 위한 메시지 인덱싱
필터링은 전체 메시지 본문이나 첨부 파일을 파싱하는 비용을 줄여 애플리케이션을 더 빠르고 확장 가능하게 합니다.
메시지 메타데이터 접근
Aspose.Email은 다음을 제공합니다 MboxMessageInfo 전체 MailMessage 내용을 읽지 않고 기본 메시지 메타데이터에 접근하도록 설계된 클래스입니다. 요약 객체 역할을 하며 호출 시 반환됩니다 MboxStorageReader.EnumerateMessageInfo().
다음이 노출하는 주요 속성: MboxMessageInfo 메시지 정보를 가져오기 위해 포함합니다:
- DateTime Date - 메시지 날짜를 가져옵니다.
- MailAddress From - 발신자 주소를 가져옵니다.
- string Subject - 메시지 제목을 가져옵니다.
- MailAddressCollection To - 메시지 수신자를 포함하는 주소 컬렉션을 가져옵니다.
- MailAddressCollection CC - CC 수신자를 포함하는 주소 컬렉션을 가져옵니다.
- MailAddressCollection Bcc - 메시지의 BCC 수신자를 포함하는 주소 컬렉션을 가져옵니다.
MboxStorageReader reader = MboxStorageReader.CreateReader(fileName, new MboxLoadOptions());
foreach (var mboxMessageInfo in reader.EnumerateMessageInfo())
{
Console.Writeline($"Subject: {mboxMessageInfo.Subject}");
Console.Writeline($"Date: {mboxMessageInfo.Date}");
Console.Writeline($"From: {mboxMessageInfo.From}");
Console.Writeline($"To: {mboxMessageInfo.To}");
Console.Writeline($"CC: {mboxMessageInfo.CC}");
Console.Writeline($"Bcc: {mboxMessageInfo.Bcc}");
}
EntryId로 메시지 추출
다음은 MboxStorageReader 클래스는 EnumerateMessageInfo() 메서드는 MBOX 파일의 각 메시지를 반복할 수 있게 해줍니다. 이 메서드를 사용하면 전체 저장소를 반복적으로 탐색할 필요 없이 개별 메시지를 추출할 수 있어 성능이 향상되고 처리 시간이 단축됩니다.
다음은 MboxMessageInfo class는 다음을 제공합니다 EntryId 속성은 MBOX 파일 내 각 메시지의 고유 식별자에 접근할 수 있게 해줍니다. 이 식별자는 데이터베이스에 저장하거나 필요 시 특정 메시지를 빠르게 찾고 추출하는 참조로 사용할 수 있습니다.
다음은 ExtractMessage(string id) 메서드가 MboxStorageReader 클래스는 개발자가 고유한 EntryId를 기반으로 메시지를 추출할 수 있도록 합니다. 이를 통해 ExtractMessage(string id) 메서드를 사용하면 저장된 EntryId를 활용해 해당 메시지를 가져오고 추가 작업을 수행할 수 있습니다.
다음 코드 예제는 식별자를 사용하여 MBOX 파일에서 메시지를 추출하는 방법을 보여줍니다.
MboxStorageReader reader = MboxStorageReader.CreateReader("my.mbox", new MboxLoadOptions());
foreach (MboxMessageInfo msgInfo in reader.EnumerateMessageInfo())
{
MailMessage eml = reader.ExtractMessage(msgInfo.EntryId, new EmlLoadOptions());
}
MailQuery를 사용한 MBOX 이메일 필터링 및 검색
Aspose.Email for .NET은 사용자 지정 쿼리를 기반으로 메일함 아카이브 내 메시지를 필터링하거나 검색할 수 있는 기능을 제공합니다. 이를 통해 개발자는 특정 기준에 일치하는 메시지만 조회하여 대용량 이메일 아카이브 작업 시 성능과 사용성을 향상시킬 수 있습니다.
다음 코드 샘플은 MailQuery API를 사용해 메일 저장 파일에 검색 기준을 적용하는 방법을 보여줍니다. 이 예제에서는 제목에 "Project Update"가 포함되고 오늘 날짜 이전에 전송된 메시지를 선택합니다.
using Aspose.Email.Storage.Mbox;
using Aspose.Email;
var reader = MboxStorageReader.CreateReader("input.mbox", new MboxLoadOptions());
var mqb = new MailQueryBuilder();
mqb.Subject.Contains("Project Update");
mqb.SentDate.Before(DateTime.Today);
foreach (var message in reader.EnumerateMessages(mqb.GetQuery()))
{
Console.WriteLine("Subject: " + message.Subject);
}
MBOX에서 메시지를 읽을 때 로드 옵션 구성
다음 기능을 사용하면 메시지 로드 및 처리를 위한 다양한 옵션을 지정할 수 있습니다:
-
MailStorageConverter.MboxMessageOptions 속성 - Mbox 저장소를 구문 분석할 때 이메일 로드 옵션을 가져오거나 설정합니다.
-
MboxrdStorageReader.ReadNextMessage(EmlLoadOptions options) 메서드 - EmlLoadOptions 매개변수는 Mbox 저장소에서 메시지를 읽을 때 옵션을 지정합니다.
var reader = new MboxrdStorageReader(fileName, new MboxLoadOptions());
// Read messages preserving tnef attachments.
var eml = reader.ReadNextMessage(new EmlLoadOptions {PreserveTnefAttachments = true});
MailStorageConverter.MboxMessageOptions(new EmlLoadOptions {PreserveTnefAttachments = true});
// Convert messages from mbox to pst preserving tnef attachments.
var pst = MailStorageConverter.mboxToPst("Input.mbox", "Output.pst");