检测Outlook 2007中的自动存档设置/存储

时间:2009-03-08 21:54:33

标签: .net outlook vsto outlook-2007 outlook-addin

我想编写一个简单的Outlook 2007 AddIn,允许我手动自动存档邮件。也就是说,我右键单击一封邮件,选择自动存档,然后将其移动到我的存档文件夹中。

不幸的是,我似乎无法检测哪一个是归档存储。我知道Application.GetNamespace(“MAPI”)。商店是我所有商店的列表,这包括我的存档商店。但我似乎没有办法检测商店是否是存档商店。

在你推荐针对store.DisplayName的简单字符串匹配之前,请记住本地化(在德语中,Store是“Archivordner”,这显然与英语不同)。

我原以为可以访问自动存档设置以获取文件名,然后与store.FilePath匹配,但我无法在任何地方找到此设置。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

好的,找到了。秘密是IPC.MS.Outlook.AgingProperties,它有点奇怪和无证,但它对我来说已经足够了。

    private bool GetArchiveFilename(MAPIFolder fld, out string archiveFileName)
    {
        bool result = false;
        archiveFileName = string.Empty;
        if (fld != null)
        {
            StorageItem si = fld.GetStorage("IPC.MS.Outlook.AgingProperties", OlStorageIdentifierType.olIdentifyByMessageClass);

            try
            {
                archiveFileName = si.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x6859001E").ToString();
                result = true;
            }
            catch (COMException)
            {
                return GetArchiveFilename(fld.Parent as MAPIFolder, out archiveFileName);
            }
        }
        return result;
    }