我想编写一个简单的Outlook 2007 AddIn,允许我手动自动存档邮件。也就是说,我右键单击一封邮件,选择自动存档,然后将其移动到我的存档文件夹中。
不幸的是,我似乎无法检测哪一个是归档存储。我知道Application.GetNamespace(“MAPI”)。商店是我所有商店的列表,这包括我的存档商店。但我似乎没有办法检测商店是否是存档商店。
在你推荐针对store.DisplayName的简单字符串匹配之前,请记住本地化(在德语中,Store是“Archivordner”,这显然与英语不同)。
我原以为可以访问自动存档设置以获取文件名,然后与store.FilePath匹配,但我无法在任何地方找到此设置。
有什么建议吗?
答案 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;
}