2009-11-12 26 views
7

Estoy escribiendo una aplicación que manipulará los datos de Outlook. Primero quiero hacer una copia de seguridad de esos datos y espero poder simplemente recorrer los elementos de contacto/calendario, etc. y escribirlos en un archivo PST.¿Cómo puedo crear un archivo PST de Outlook usando .Net?

¿Cómo puedo escribir el contenido de 1 o varias carpetas de Outlook en un PST usando .Net? [vb o C# no importa]

Respuesta

10

Pude juntar este código de una variedad de muestras en Internet y documentos de MSDN. Esto le permitirá elegir una carpeta de alto nivel de perspectiva y hará una copia de seguridad de todas las carpetas que se encuentran debajo. En mi caso, en realidad no quería carpetas de correo, así que las 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; ¿dónde se declara e inicializa el objeto "pst"? – akavel

+0

ns.AddStore (BACKUP_PST_PATH) - esto creará un PST si no existe ninguno en esa ubicación - ns.Session.Folders.GetLast() le dará un control para ese PST/Folder – brendan

+0

entonces la variable "pst" en su código (en 2 lugares) ¿hay un error tipográfico que sea "oFolder"? – akavel

Cuestiones relacionadas