【问题标题】:How to find Achieve folders in Outlook without knowing the file path using C#如何在不知道文件路径的情况下使用 C# 在 Outlook 中查找存档文件夹
【发布时间】:2019-11-12 07:45:19
【问题描述】:

我正在构建一个内部 VSTO Outlook 加载项,我需要扫描所有电子邮件中的某些数字。我已成功扫描 Exchange Server 上的所有邮件,但本地 Achive 文件夹出现问题。

我已经尝试了好几个小时来寻找解决方案,但没有成功。所有示例都依赖于名为“存档”的文件夹或其他可以硬编码的已知名称,这会产生如下解决方案:

private static _NameSpace ns = myApp.GetNamespace("MAPI");
Outlook.Folder archiveFolder = ns.Folders["Archive"] as Outlook.Folder;

How the structure might look like

上面的这个链接显示了我可能会在我的同事中遇到的结构。 (还有更多文件夹)

我正在寻找能够找到所有这些文件夹及其内容或根文件夹路径的解决方案。 我有一个可以找到所有子文件夹的方法,如果需要我可以发布。

我希望有人可以帮助我:)

【问题讨论】:

    标签: c# outlook vsto


    【解决方案1】:

    您似乎只需要使用Namespace 类的Stores 属性来遍历配置文件中的所有商店,该属性返回代表当前配置文件中所有Store 对象的Stores 集合对象。您可以使用StoresStore 对象枚举当前会话中所有商店的所有文件夹和搜索文件夹。

    Sub EnumerateFoldersInStores()  
     Dim colStores As Outlook.Stores  
     Dim oStore As Outlook.Store  
     Dim oRoot As Outlook.Folder  
    
     On Error Resume Next 
    
     Set colStores = Application.Session.Stores  
     For Each oStore In colStores  
       Set oRoot = oStore.GetRootFolder  
       Debug.Print (oRoot.FolderPath)  
       EnumerateFolders oRoot  
     Next  
    End Sub 
    
    Private Sub EnumerateFolders(ByVal oFolder As Outlook.Folder)  
     Dim folders As Outlook.folders  
     Dim Folder As Outlook.Folder  
     Dim foldercount As Integer 
    
     On Error Resume Next  
     Set folders = oFolder.folders  
     foldercount = folders.Count  
     'Check if there are any folders below oFolder  
     If foldercount Then  
       For Each Folder In folders  
         Debug.Print (Folder.FolderPath)  
         EnumerateFolders Folder  
       Next  
     End If  
    End Sub
    

    Working with Outlook Accounts, Stores, Folders and Items 文章中了解更多信息。

    【讨论】:

    • 我没看懂代码,但是你提供的链接解决了我的问题!谢谢你:)
    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 2015-12-29
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多