2009-03-08 11 views
1

Je souhaite écrire un complément Outlook 2007 simple qui me permet d'archiver automatiquement les messages. C'est-à-dire que je clique avec le bouton droit sur un mail, sélectionne Auto-Archive et qu'il est déplacé dans mon dossier Archive.Détection des paramètres d'archivage automatique/Stockage dans Outlook 2007

Malheureusement, je ne suis pas en mesure de détecter lequel est le stockage d'archives. Je sais que Application.GetNamespace ("MAPI"). Stores est une liste de tous mes magasins, y compris mon magasin d'archives. Mais je ne semble pas trouver un moyen de détecter si un magasin est le magasin d'archives ou non. Avant de recommander la chaîne simple correspondant à store.DisplayName garder à l'esprit la localisation (en allemand, le magasin est "Archivordner", ce qui est évidemment différent de l'anglais).

Je pensais qu'il pourrait être possible d'accéder au paramètre Auto Archive pour obtenir le nom de fichier et ensuite correspondre à store.FilePath, mais je ne trouve pas ce paramètre n'importe où.

Des suggestions?

Répondre

2

D'accord, je l'ai trouvé. Le secret est IPC.MS.Outlook.AgingProperties et c'est un peu bizarre et non documenté, mais c'est assez bon pour moi.

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; 
    } 
Questions connexes