문제

교환 사서함에서 메시지의 나이를 계산하여 프로그램 (C ++, MAPI)이 처리하기 전에 최소 1 분 동안 거기에 앉아 있는지 확인하고 싶습니다. 이런 식으로 우리가 사용하는 스팸 필터 일을하기에 충분한 시간이 있어야합니다.

프로그램이 실행되는 PC의 시간은 Exchange 서버에서 사용하는 시간과 다를 수 있으므로 프로그램은 MAPI를 통해 서버 시간을 읽어야합니다.

우아한 해결책이 있습니까? 내가 생각할 수있는 한 가지 방법은 일부 항목을 수정하고 즉시 읽는 것입니다. pr_last_modification_time, 그러나 나는 그것을 피하고 싶습니다.

편집하다:
우리의 프로그램은 10 분마다 실행되며 사서함 저널을 읽는 배치 작업입니다.

도움이 되었습니까?

해결책

메시지가 Exchange 사서함에 도착하면 MAPI 이벤트 알림을 받고 있다고 가정합니다. 이 메시지를 대기열에 밀고 기다리는 것이 좋습니다. n 메시지를 처리하기 전에 초 (예 : 60S). 시간은 알림 이벤트와 관련이 있으므로 컴퓨터 간의 시계 드리프트와 관련하여 문제가 없습니다.

응용 프로그램을 시작하면 기존 메시지를 위해이 작업을 다시 수행해야하지만 이것이 문제가 될 것이라고 상상하지 못할 것입니다.

다른 팁

당신이 사용할 수있는 PR_MESSAGE_DELIVERY_TIME.

에 따라 MSDN:

그만큼 PR_MESSAGE_DELIVERY_TIME 속성은 전송 제공 업체가 서버에서 로컬 스토어로 메시지를 복사 한 다운로드 시간이 아닌 메시지가 서버에 저장된 시간을 설명합니다.

그 외에 - 솔루션이 클라이언트에서 실행될 때 - 처음에 클라이언트 시간을 사용하지 않는 이유는 무엇입니까? 상대적 시간 (예 : "1 분 후 ...")의 경우 부정확 한 시계 여부는 차이가 없어야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top