2012-08-24 53 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和福斯产品,您可以按如下用做PropertyAccessor接口这样:

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

不过,我也需要支持Outlook 2003和财产PropertyAccessor接口在Outlook 2007中加入我因此能够使用Redemption's RDOMail object用下面的代码(省略错误处理)。

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); 
相关问题