1

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

不幸的是,我似乎无法检测到哪一个是存档存储。我知道 Application.GetNamespace("MAPI").Stores 是我所有商店的列表,其中包括我的存档商店。但是我似乎没有找到一种方法来检测商店是否是存档商店。

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

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

有什么建议么?

4

1 回答 1

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;
    }
于 2009-03-08T23:54:22.613 回答