2009-03-08 2 views
1

Я хочу написать простую Outlook 2007 AddIn, которая позволяет мне вручную автоматизировать архивирование писем. То есть, я щелкнул правой кнопкой мыши по электронной почте, выберите «Авто-архив» и переместится в папку «Архив».Обнаружение настроек автоархивации/сохранение в Outlook 2007

К сожалению, я не могу обнаружить, какой из них является хранилищем архивов. Я знаю, что Application.GetNamespace («MAPI»). Магазины - это список всех моих магазинов, и это включает мой Архивный магазин. Но, похоже, я не нашел способа определить, есть ли магазин в Хранилище архивов или нет.

Перед тем, как вы порекомендуете простую сопоставление строк с store.DisplayName, имейте в виду локализацию (на немецком языке Store является «Archivordner», что явно отличается от английского).

Я думал, что можно получить доступ к настройке авто архива, чтобы получить имя файла, а затем сопоставить с store.FilePath, но я не могу найти этот параметр нигде.

Любые предложения?

ответ

2

Хорошо, нашел. The Secret - это 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; 
    }