【问题标题】:VSTO: Iterating through Outlook inbox raises error when non-mail items appearsVSTO:当出现非邮件项目时,遍历 Outlook 收件箱会引发错误
【发布时间】:2017-06-08 22:23:55
【问题描述】:

我在 Visual Studio (VSTO + VB.Net) 中有一些代码将遍历我的 Outlook 收件箱中的所有项目。该代码可以正常工作,直到我的收件箱中有其他项目,例如约会等。

下面的代码经过简化并遍历排序列表中的所有项目。当 FolderItem(MailItem 类型)分配有其他类型的项目时,会出现问题,例如会议项目类。引发异常。

我明白为什么...但是我需要一个解决方案来找到解决方法。我想处理所有项目,包括会议项目。

Dim InboxFolder As Outlook.MAPIFolder
Dim FolderItem As Outlook.MailItem
Dim FolderItems As Outlook.Items
Dim ItemNo As Integer

*** removed code that finds the inbox object 'InboxFolder' ***

ItemNo = 1
FolderItems = InboxFolder.Items
FolderItems.Sort("[ReceivedTime]", True)

Do While ItemNo <= FolderItems.Count
    FolderItem = FolderItems(ItemNo)

    *** Do some operations on each inbox-object here ***

    ItemNo = ItemNo + 1
Loop

【问题讨论】:

    标签: vb.net outlook vsto


    【解决方案1】:

    一种可能是将 FolderItem 定义为对象,然后...

    • ...在将类型分配给特定类型的变量之前检查类型

    • ...如有必要,将其转换为 while 循环中的特定类型

    类似这样的东西(未测试):

    If TypeOf FolderItem Is MailItem Then
       Dim mailItm As MailItem = DirectCast(FolderItem, MailItem)
       'Do something
    ElseIf TypeOf FolderItem Is MeetingItem Then
       Dim meetItm As MeetingItem = DirectCast(FolderItem, MeetingItem)
       'Do something
    End If
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-08
      • 1970-01-01
      • 2015-12-20
      • 2019-09-07
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多