代码之家  ›  专栏  ›  技术社区  ›  Alex

如何在VSTO加载项的Outlook文件夹名称中检测“仅此计算机”标志?

  •  0
  • Alex  · 技术社区  · 6 年前

    从Outlook 2013及更新版本开始,Outlook有时(对于.OST文件)可能会在文件夹名称后附加“(仅限此计算机)”后缀。在其他情况下(.PST文件)不会发生这种情况。因此,根据具体情况,对于本地化版本的Outlook,文件夹名可以是“某些文件夹”或“某些文件夹(仅限此计算机)”或“某些文件夹(谁知道还有什么)”。

    有没有什么方法可以得到没有这个后缀的文件夹名(所以我总是得到,比方说,“某个文件夹”,不管这个后缀是否存在于文件夹名中?目前我在Outlook.文件夹对象,它将返回给我那个短名称。

    我可以想出一种解决方法,比如获取默认联系人文件夹名,检查它是否以“(something)”结尾,然后从文件夹名中删除“(something)”,但对我来说,这似乎不是一个优雅的解决方案。

    另一种方法是创建一个临时文件夹并检查其名称是否与我提供的名称不同。如果它们不同,那就是后缀。然而,仅仅为它创建/删除一个文件夹看起来也不优雅。

    在MFCMapi工具中,在名为“Contacts(仅此计算机)”的文件夹的MAPI属性中的任何位置都找不到“Contacts”,因此这似乎不只是Outlook的OOM限制。

    确实,没有这个后缀就无法通过编程获得文件夹名,我应该只依赖我(丑陋的)解决方案?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dmitry Streblechenko    6 年前

    不要依赖文件夹名。除了IMAP4存储有“(仅此计算机)”后缀外,这些名称还可以本地化。

    总是使用 Namespace.GetDefaultFolder Store.GetDefaultFolder .