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

问题描述 投票:0回答:2

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

我的问题是我可以访问与帐户关联的所有类别

Outlook.Application application = new Outlook.Application();
Outlook.Categories categories = application.Session.Categories;

但无法找到一种方法来获取链接到共享邮箱的类别。

有没有办法获得共享邮箱类别?如果没有,我将如何处理这种情况,所以稍后我可以根据这些类别创建视图。

先感谢您。

c# outlook vsto outlook-addin
2个回答
1
投票

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

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

您还可以使用Redemption集合访问RDOCategories(我的作者)中的Categories集合。 Redemption在会话级别(默认商店中的RDOSession.Categories)和商店级别(RDOStore2.Categories)上公开类别。可以使用RDOSession.GetSharedMailbox打开共享邮箱。


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;
        }
    }

如果有人有更好的答案,我会期待看到它。

© www.soinside.com 2019 - 2024. All rights reserved.