Обнаружение параметров автоархивации / магазина в Outlook 2007 - PullRequest
1 голос
/ 09 марта 2009

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

К сожалению, я не могу определить, какое из них является архивным хранилищем. Я знаю, что Application.GetNamespace ("MAPI"). Stores - это список всех моих магазинов, включая мой Archive Store. Но я, похоже, не могу найти способ определить, является ли хранилище архивным хранилищем или нет.

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

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

Есть предложения?

1 Ответ

2 голосов
/ 09 марта 2009

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