2

我正在使用 C# 为 Outlook 编写一个 COM 加载项。如果保存了会议但未发送邀请,Outlook 会在表单顶部显示一条消息,说明尚未发送邀请。如何以编程方式确定尚未发送会议邀请?

我尝试检查每个Recipient并检查MeetingResponseStatus. 我希望它是OlResponseNone如果邀请尚未发送,但OlResponseNotResponded如果邀请已发送但未收到回复。但是,我总是会收到OlResponseNone未收到邀请或已回复但尚未回复的收件人。因此,我无法区分没有发出邀请但没有人回复的会议。

我在 Outlook 2007 中完成了大部分测试,但我相信 2003 年和 2010 年也是如此,我需要支持所有这些。

4

1 回答 1

1

我在这篇文章中找到了部分答案。我需要阅读 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");

但是,我还需要支持 Outlook 2003,并且在 Outlook 2007 中添加了 PropertyAccessor 属性。因此,我能够通过以下代码使用Redemption 的 RDOMail 对象(省略了错误处理)。

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);
于 2012-08-27T19:31:42.953 回答