1

メールを手動で自動アーカイブできる簡単なOutlook2007アドインを作成したいと思います。つまり、メールを右クリックして[自動アーカイブ]を選択すると、メールがアーカイブフォルダに移動します。

残念ながら、どちらがアーカイブストレージであるかを検出できないようです。Application.GetNamespace( "MAPI")。Storesはすべてのストアのリストであり、これにはアーカイブストアも含まれます。しかし、ストアがアーカイブストアであるかどうかを検出する方法が見つからないようです。

store.DisplayNameに対して単純な文字列照合を推奨する前に、ローカリゼーションを覚えておいてください(ドイツ語では、ストアは「Archivordner」であり、英語のものとは明らかに異なります)。

自動アーカイブ設定にアクセスしてファイル名を取得し、store.FilePathと照合できると考えていましたが、この設定がどこにも見つかりません。

助言がありますか?

4

1 に答える 1

2

よし、見つけた。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;
    }
于 2009-03-08T23:54:22.613 に答える