使用Outlook Interop拉入收件箱/文件夹名称

时间:2015-04-30 20:19:00

标签: vb.net visual-studio-2010 outlook

我正在编写一个可以从Outlook(Exchange)收件箱(文件夹)中读取电子邮件的应用程序,然后自动将电子邮件导出到单独的数据库中以供进一步处理。

第一个逻辑步骤是将收件箱和相关文件夹列入两个组合框,以便用户可以选择相应的收件箱和文件夹。为了填充此信息,我使用Microsoft.Office.Interop.Outlook namespace。我已经编写了以下代码来提取在我的开发机器上完美运行的收件箱/文件夹列表(我只有一些链接到我的域名的收件箱)但是在其他人的机器上工作不正常收件箱比我做的:

Dim outlookApplication As New Outlook.Application
Dim mapiNameSpace As Outlook.NameSpace = outlookApplication.GetNamespace("MAPI")

For Each item In mapiNameSpace.Folders


Dim listOfFolders As New List(Of String)

For Each subfolder In item.Folders 'EXCEPTION OCCURS HERE
                            listOfFolders.Add(subfolder.folderpath.ToString.Replace("\", String.Empty).Replace(item.FolderPath.ToString.Replace("\", String.Empty), String.Empty))

Next subfolder

                        subFolderDictionary.Add(item.FolderPath.ToString.Replace("\", String.Empty), listOfFolders)

Catch ex As Exception
MsgBox("COULD NOT GET FOLDER INFO: " & ex.ToString)
End Try

Next item

enter image description here

我在上面的注释中指出了我的异常发生的位置(在命名空间MAPI文件夹上的For..Each循环上。我附上了异常的图片:尝试的操作失败。找不到对象。很明显,我们都在运行包含相同应用程序版本的通用映像。创建Outlook应用程序对象或outlook命名空间时没有错误。当我去循环Outlook命名空间MAPI文件夹时,似乎会发生错误。

这里的另一个问题是我没有与此用户相同数量的收件箱。这个用户没有安装visual studio,因此在他的机器上进行调试似乎是不可能的。由于我没有遇到他所看到的问题,我不确定我应该做些什么才能解决这个问题。完全改变他的配置是不可能的。有关此问题的任何想法或以前的经验?如何在无法可靠调试的计算机上开始调试问题?

1 个答案:

答案 0 :(得分:1)

对于遇到此问题的任何其他人,在彻底研究并在输出变量到文本文件中来回工作之后,用户已将收件箱添加到他们的电子邮件帐户,他们未经交换机授权访问。这是导致“尝试的操作失败。无法找到对象”的原因,因为用户无法从Outlook访问收件箱。