2009-11-12 14 views
7

Sto scrivendo un'app che manipolerà i dati di Outlook. Voglio fare un backup di questi dati per primo e spero di poter semplicemente scorrere gli elementi di contatto/calendario, ecc. E scriverli in un file PST.Come posso creare un file PST di Outlook usando .Net?

Come posso scrivere il contenuto di 1 o più cartelle di Outlook su un PST utilizzando .Net? [vb o C# non importa]

risposta

10

Sono riuscito a suddividere questo codice da una serie di esempi su Internet e documenti MSDN. Questo ti permetterà di scegliere una cartella di alto livello di Outlook e farà il backup di tutte le cartelle sottostanti. Nel mio caso in realtà non volevo cartelle di posta, quindi le escluderei.

 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; dov'è l'oggetto "pst" dichiarato e inizializzato? – akavel

+0

ns.AddStore (BACKUP_PST_PATH) - questo creerà un file PST se non esiste in quella posizione - ns.Session.Folders.GetLast() ti darà quindi un handle per quel PST/cartella – brendan

+0

quindi la variabile "pst" nel tuo codice (in 2 punti) è un errore di battitura che significa essere "oFolder"? – akavel

Problemi correlati