2009-11-12 6 views
7

J'écris une application qui va manipuler les données Outlook. Je veux d'abord faire une sauvegarde de ces données et j'espère que je pourrais juste boucler les éléments de contact/calendrier, etc et les écrire dans un fichier PST.Comment puis-je créer un fichier Outlook PST en utilisant .Net?

Comment puis-je écrire le contenu de 1 ou de plusieurs dossiers Outlook dans un fichier PST en utilisant .Net? [vb ou C# peu importe]

Répondre

10

J'ai été en mesure d'assembler ce code à partir d'une variété d'échantillons sur Internet et les documents MSDN. Cela vous permettra de choisir un dossier de haut niveau de perspectives et sauvegardera tous les dossiers dessous. Dans mon cas, je ne voulais pas de dossiers de courrier, donc je les exclu.

 Const BACKUP_PST_PATH As String = "C:\backup.pst"  

     Dim oFolder As Outlook.MAPIFolder = Nothing 
     Dim oMailbox As Outlook.MAPIFolder = Nothing 

     Dim app As New Outlook.Application() 
     Dim ns As Outlook.NameSpace = app.GetNamespace("MAPI") 
     Try 
      //if the file doesn not exist, outlook will create it 
      ns.AddStore(BACKUP_PST_PATH) 
      oFolder = ns.Session.Folders.GetLast() 
      oMailbox = ns.PickFolder() 

     For Each f As Outlook.Folder In oMailbox.Folders 
      If f.DefaultItemType <> Microsoft.Office.Interop.Outlook.OlItemType.olMailItem And f.FolderPath <> oFolder.FolderPath Then 
       f.CopyTo(oFolder) 
      End If 
     Next 

     ns.RemoveStore(oFolder) 

     Catch ex As Exception 
      ns.RemoveStore(oFolder) 
      IO.File.Delete(BACKUP_PST_PATH) 
      Throw ex 
     End Try 
+0

um; où est l'objet "pst" déclaré et initialisé? – akavel

+0

ns.AddStore (BACKUP_PST_PATH) - cela créera un fichier PST s'il n'existe pas à cet emplacement - ns.Session.Folders.GetLast() vous donnera alors un handle pour ce PST/Folder – brendan

+0

donc la variable "pst" dans votre code (en 2 endroits) est une faute de frappe censée être "oFolder"? – akavel