1

我正在尝试浏览 Outlook 文件夹并SaveAs根据用户提供的某些标准(年龄、主题、内容)在其中保存项目()。我遇到的问题是我无法确定文件夹中某些项目的类型。我正在使用

if( currentItem is MailItem )
  // do something
else if (currentItem is AppointmentItem)
  // do something else
// etc.

尝试确定类型并酌情处理该项目。不幸的是,我发现有几种类型似乎与我测试过的任何列出的类型都不匹配。使用OutlookSpy我可以查看显示为类型 53 OlObjectClass.olMeetingRequest的相关对象。MeetingItem这与or都不匹配,AppointmentItem而且我似乎没有看到任何其他可能列出的类型。我找不到MeetingRequestItem或等效的。显而易见的方法,比如GetTypeonly 说它是一个 COM 对象,到目前为止我发现没有其他方法似乎可以解决问题。

我已经通读了 Office 2007 的 VSTO,但它也没有提供任何我能找到的指导。我已经搜索了 MSDN,这个站点还有很多其他站点,但运气不佳。另一个用户发布了一个类似的问题,但没有任何答案。VS2010 能够解决这个问题,因为您可以将动态转换添加到监视列表并显示对象信息,它只是不告诉您它是什么。

很抱歉问我似乎是一个菜鸟的问题,但我试图找出一个对象到 Interop 类型映射。如果有人有动态确定 Outlook 对象类型的方法,这将非常有帮助;我只是在这方面没有太多运气......

4

1 回答 1

0

会议请求、响应或更新以Outlook.MeetingItem. AppointmentItem您可以使用访问底层证券MeetingItem.GetAssociatedAppointment()

这是一个来自 MSDN 的示例,说明如何AppointmentItem从 a 访问 a MeetingItem

Outlook.Folder folder = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox) as Outlook.Folder;
string filter = "[MessageClass] = 'IPM.Schedule.Meeting.Request'";
Outlook.Items items = folder.Items.Restrict(filter);
foreach (Outlook.MeetingItem request in items)
{
    Outlook.AppointmentItem appt =  request.GetAssociatedAppointment(false);
    if (appt != null)   
        Debug.WriteLine(appt.Subject);
}
于 2012-08-20T13:53:59.663 回答