2012-08-24 7 views
2

C#을 사용하여 Outlook 용 COM 추가 기능을 작성하고 있습니다. 모임이 저장되고 초대장이 전송되지 않으면 Outlook은 초대장이 보내지지 않았다는 메시지의 맨 위에 메시지를 표시합니다. 회의에서 초대장을 보내지 않았다는 것을 프로그래밍 방식으로 어떻게 결정합니까?Outlook에서 모임 초대장을 보낸 적이 있는지 어떻게 알 수 있습니까?

Recipient을 검사하고 MeetingResponseStatus을 확인해 보았습니다. 초대장을 보내지 않았 으면 OlResponseNone이되지만 초대장은 보내졌지만 응답을받지 못한 경우는 OlResponseNotResponded이됩니다. 그러나 초대장을받지 못했거나 아직 회신하지 않은 수신자는 항상 OlResponseNone입니다. 따라서 초대장이 발송 된 곳에서 초대장이 발송되지 않았지만 아무도 응답하지 않은 회의를 구분할 수 없습니다.

나는 Outlook 2007에서 대부분의 테스트를 수행했지만, 2003 년과 2010 년에는 동일한 지원이 필요하다고 생각합니다.

답변

1

부분 응답은 this post입니다. DASL 속성 "http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-000000000046}/80BE0102"을 읽어야합니다. 다음과 같이 Outlook 2007 및 leter, 당신은 PropertyAccessor에 함께이 작업을 수행 할 수 있습니다

appointment.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-000000000046}/80BE0102"); 

을하지만, 내가 Redemption's RDOMail object를 사용하는 것이 수 있었다 아웃룩 2007에 추가 된 아웃룩 2003과 PropertyAccessor에 속성을 지원해야 다음 코드를 사용하십시오 (오류 처리 생략).

var _session = New RDOSession(); 
_session.Logon(); 
var _message = _session.GetMessageFromID(appointment.EntryID, ((Outlook.MAPIFolder)appointment.Parent).StoreID); 
return (bool)_message.Fields["http://schemas.microsoft.com/mapi/id/{00062002-0000-0000-C000-000000000046}/8229000B"]; 
Marshal.ReleaseComObject(_message); 
_session.Logoff(); 
Marshal.ReleaseComObject(_session);