EWS를 사용한 Exchange 서버 사서함에서 메시지 필터링 및 정렬

EWS를 사용한 메시지 필터링 및 정렬

다음은 IEWSClient 인터페이스는 제공한다 ListMessages() 메일함에서 모든 메시지를 가져오는 메서드입니다. 특정 조건에 일치하는 메시지만 가져오려면 오버로드된 메서드를 사용하십시오. ListMessages() 매개변수를 받는 메서드 MailQuery 클래스를 인수로 사용합니다.  MailQuery 클래스는 날짜, 제목, 발신자 및 수신자 등 조건을 지정하기 위한 다양한 속성을 제공합니다. 또한 API는 메일함에서 이메일을 검색할 때 대소문자 구분 필터를 적용할 수 있도록 합니다.

조건으로 메시지 필터링

사서함에서 필터링된 메시지를 가져오려면:

  1. Exchange 서버에 연결합니다.
  2. 다음의 인스턴스를 생성합니다 MailQuery 그리고 원하는 속성을 설정합니다.
  3. 다음을 호출합니다. IEWSClient.ListMessages() method에 전달하고 MailQuery 매개변수에 지정하여 필터링된 메시지만 가져옵니다.

다음 코드 스니펫은 IMAP 메일함에 연결하고 제목에 "Newsletter" 문자열이 포함되며 오늘 보낸 메시지를 가져오는 방법을 보여줍니다.

오늘 날짜 기준

다음 코드 스니펫은 오늘 날짜를 기준으로 모든 이메일을 필터링하는 방법을 보여줍니다.

날짜 범위 기준

다음 코드 스니펫은 날짜 범위를 기준으로 모든 이메일을 필터링하는 방법을 보여줍니다.

보낸 사람 기준

다음 코드 스니펫은 특정 발신자를 기준으로 모든 이메일을 필터링하는 방법을 보여줍니다.

도메인 기준

다음 코드 스니펫은 특정 도메인을 기준으로 모든 이메일을 필터링하는 방법을 보여줍니다.

받는 사람 기준

다음 코드 스니펫은 특정 수신자를 기준으로 모든 이메일을 필터링하는 방법을 보여줍니다.

MessageID 기준

다음 코드 스니펫은 MessageID를 기준으로 모든 이메일을 필터링하는 방법을 보여줍니다.

메일 배달 알림 기준

다음 코드 스니펫은 모든 메일 전달 알림을 기준으로 모든 이메일을 필터링하는 방법을 보여줍니다.

메시지 크기 기준

복잡한 쿼리 구축

다른 경우 MailQueryBuilder 속성이 별도 구문에서 설정되면 모든 조건이 일치합니다. 예를 들어 특정 날짜 범위와 특정 호스트에서 메시지를 가져오려면 세 개의 구문을 작성합니다:

AND로 쿼리 결합

다음 코드 조각은 AND로 쿼리를 결합하는 방법을 보여줍니다.

OR로 쿼리 결합

MailQueryBuilder 제공합니다 Or() 두 개를 받는 메서드 MailQuery 인스턴스를 매개변수로 전달합니다. 지정된 두 조건 중 하나와 일치하는 메시지를 가져옵니다. 아래 예제는 제목에 “test”라는 단어가 있거나 발신자가 “noreply@host.com”인 메시지를 필터링합니다. 다음 코드 조각은 OR을 사용해 쿼리를 결합하는 방법을 보여줍니다.

대소문자 구분 이메일 필터링

다음 코드 조각에 표시된 대로 필터 기준에 IgnoreCase 플래그를 지정하여 대소문자 구분에 따라 이메일을 필터링할 수 있습니다.

페이지 매김 지원 메시지 필터링

필터링된 메시지를 오름차순/내림차순으로 정렬

이메일 필터링은 메시지를 오름차순/내림차순으로 정렬하여 지원할 수 있습니다. 이 경우, OrderBy MailQueryBuilder 클래스를 사용하여 이메일 검색 결과의 정렬 순서를 지정하는 메서드입니다. 이 메서드를 통해 검색 쿼리의 정렬 기준을 정의하고, 특정 속성을 기준으로 결과를 오름차순 또는 내림차순으로 정렬할지 지정할 수 있습니다.

이 메서드는 지정된 속성에 대한 정렬 순서를 지정하는 ascending 매개변수를 받습니다. ascending 매개변수가 true이면 검색 결과가 오름차순으로 정렬되어야 함을 의미합니다. 반대로 false이면 검색 결과가 내림차순으로 정렬되어야 함을 의미합니다.

MailQueryBuilder builder = new MailQueryBuilder();
builder.Subject.Contains("Report");
builder.InternalDate.Since(new DateTime(2020, 1, 1));
builder.Subject.OrderBy(true); // sort the subject ascending
builder.InternalDate.OrderBy(false); // sort the date descending

MailQuery query = builder.GetQuery();

// Get list of messages
ExchangeMessageInfoCollection messages = client.ListMessages(client.MailboxInfo.InboxUri, query, false);

위 코드 예제에서 OrderBy 메서드는 두 번 적용됩니다. 한 번은 제목에, 한 번은 이메일 날짜에 적용됩니다. 전달된 요청으로 ListMessages 메서드를 실행하면 지정된 날짜 이상에 수신된, 제목에 "Report"라는 단어가 포함된 메시지 목록을 얻습니다. 동시에 결과는 제목을 기준으로 오름차순 정렬됩니다. 이는 메시지가 제목에 따라 알파벳 순(A~Z)으로 정렬됨을 의미합니다. 또한 결과는 날짜를 기준으로 내림차순 정렬됩니다. 이는 게시물이 최신 순부터 오래된 순으로 정렬됨을 의미합니다.

AQS를 사용한 메시지 필터링

Aspose.Email for .NET를 사용하면 사용자는 고급 쿼리 구문(AQS)의 강력한 기능을 활용하여 Exchange 사서함에서 직접 메시지를 필터링할 수 있습니다. AQS는 날짜, 보낸 사람, 제목 등 특정 기준에 기반하여 이메일을 정확히 대상으로 하는 쿼리를 구성하는 견고하고 직관적인 방법을 제공합니다. 이메일 필터링 프로세스에 대한 보다 자세한 통합 정보와 Aspose.Email for .NET와 함께 AQS를 사용한 메시지 필터링 구현에 대한 포괄적인 코드 샘플은 다음을 참조하십시오 Exchange 사서함에서 AQS를 사용하여 메시지 필터링 문서.