从Outlook C#中的“共享邮箱”获取用户定义的类别

时间:2019-04-05 10:58:42

标签: c# outlook vsto outlook-addin

我正在使用Outlook加载项,它将从共享邮箱中提取预定义类别的列表。然后,用户将共享邮箱中的每封电子邮件分配给这些类别。

我的问题是我可以使用

访问链接到帐户的所有类别
Outlook.Application application = new Outlook.Application();
Outlook.Categories categories = application.Session.Categories;

但找不到找到链接到共享邮箱的类别的方法。

是否可以获取共享邮箱类别? 如果没有,我将如何处理这种情况,因此以后我可以基于这些类别创建视图。

谢谢。

2 个答案:

答案 0 :(得分:1)

类别存储在商店的Calendar文件夹中的消息类为“ IPM.Configuration.CategoryList”的隐藏消息中。如果您转到共享的Calendar文件夹并单击IMAPIFolder按钮,然后转到“相关内容”标签,则可以在OutlookSpy中看到它。

可以使用Outlook对象模型中的MAPIFolder.GetStorage访问该隐藏消息。

您还可以使用Redemption集合访问RDOCategories(我是作者)中的Categories集合。兑换会同时在会话级别(默认存储中的RDOSessionCategories和商店级别(RDOStore2Categories)中显示类别。可以使用RDOSession.GetSharedMailbox打开共享邮箱。

答案 1 :(得分:0)

以下是获取所选文件夹类别的代码。

public void LoadCategories()
    {
        CategoriesCombo.Items.Clear();
        Outlook.Application application = new Outlook.Application();
        Outlook.NameSpace ns = application.GetNamespace("MAPI");
        Outlook.MAPIFolder selectedFolder = application.ActiveExplorer().CurrentFolder;

        if (selectedFolder is Outlook.MAPIFolder)
        {
            Outlook.Folder folder = selectedFolder as Outlook.Folder;
            Outlook.Store store = folder.Store;
            Outlook.Categories categories = store.Categories;
        }
    }

如果有人有更好的答案,我希望看到它。