2009-03-08 8 views
1

メールを手動で自動アーカイブできるようにする簡単なOutlook 2007 AddInを作成します。つまり、メールを右クリックして[自動アーカイブ]を選択すると、アーカイブフォルダに移動します。Outlook 2007での自動整理の設定/保存の検出

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

store.DisplayNameとの単純な文字列照合をお勧めする前に、ローカライゼーションを覚えておいてください(ドイツ語ではStoreはArchivordnerですが、英語とは明らかに異なります)。

自動アーカイブ設定にアクセスしてファイル名を取得し、store.FilePathと照合することは可能かもしれないと思っていましたが、どこでもこの設定を見つけることができません。

提案がありますか?

答えて

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; 
    } 
関連する問題