EWS (Exchange Web Services) 관리 API를 사용하여 사서함에서 전자 메일을 읽는 방법을 작성해야합니다. 현재 이메일의 ItemId/UniqueId는 현재 이메일 이후의받은 편지함에있는 다음 이메일의 ItemId/UniqueId를 반환합니다.다음 전자 메일의 ItemId 가져 오기 항목 EWS (Exchange Web Services)를 사용하여 현재 전자 메일의 ID 관리 된 API
또한 여러 가지 이유로 메소드가 정적 상태 비 저장 메소드가되어야합니다. 즉, 메소드 호출간에 지속되는 멤버/전역 변수에 의존 할 수 없습니다. 따라서 단순히 FindItemsResults 객체의 인스턴스에 대한 참조를 저장하고 메서드가 호출 될 때마다 다음 항목으로 이동할 수 없습니다.
난 (단, 오류가 체크되지 간단한 예) 다음 코드 사용 방법을 구현하려 한 그러나
using Microsoft.Exchange.WebServices;
using Microsoft.Exchange.WebServices.Data;
...
...
public string GetNextEmailId(string currentItemId)
{
// set up Exchange Web Service connection
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2007_SP1);
service.AutodiscoverUrl("[email protected]");
// create SearchFilter to find next email after current email
ItemId itemId = new ItemId(currentItemId);
SearchFilter sfNextEmail = new SearchFilter.IsGreaterThan(EmailMessageSchema.Id, itemId);
// find next email in inbox
ItemView itemView = new ItemView(1);
itemView.OrderBy.Add(EmailMessageSchema.DateTimeReceived, SortDirection.Ascending);
FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, sfNextEmail, itemView);
// return unique ID of next email
return findResults.Items[0].Id.UniqueId;
}
를 I는 그것이 service.FindItems 행에서 다음과 같은 예외가 발생이 방법을 실행하면
System.ArgumentException : "유효성 검사가 실패했습니다. 매개 변수 이름 : searchFilter"
내부 예외 - Microsoft.Exchange.WebServices.Data.ServiceValidationException : " 'ItemId'형식의 값을 검색 필터의 비교 값으로 사용할 수 없습니다."
하나의 옵션은 FindItems를 사용하여받은 편지함에있는 모든 이메일을 찾고 현재 이메일을 찾을 때까지 ItemId를 확인한 다음 반복하여 다음 ID로 돌아가 고유 ID를 반환하는 것입니다. 그러나 나는 이것이 느리고 비효율적 일 것 같다고 생각한다. 나는 이것을 달성하는 더 좋은 방법이 있기를 희망하고있다.
도움이나 의견을 크게 주시면 감사하겠습니다. 웹 검색 솔루션을 찾을 수 없었습니다. 현재 이메일의 항목 ID를 알고있는 경우