2009-11-12 2 views
7

Я пишу приложение, которое будет управлять данными Outlook. Сначала я хочу сделать резервную копию этих данных, и надеюсь, что смогу просто прокрутить элементы контакта/календаря и т. Д. И записать их в файл PST.Как создать файл PST Outlook с помощью .Net?

Как написать содержимое 1 или нескольких папок Outlook в PST с использованием .Net? [vb или C# no matter]

ответ

10

Мне удалось собрать этот код из множества образцов в Интернете и в документах MSDN. Это позволит вам выбрать папку верхнего уровня Outlook и будет делать резервную копию всех папок внизу. В моем случае я действительно не нуждался в почтовых папках, поэтому я их исключаю.

 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; где объявлен и инициализирован объект «pst»? – akavel

+0

ns.AddStore (BACKUP_PST_PATH) - это создаст PST, если в этом месте не существует - ns.Session.Folders.GetLast() затем вы получите дескриптор этой PST/Folder – brendan

+0

, так что переменная «pst» в вашем коде (в 2-х местах) - это опечатка, предназначенная для «oFolder»? – akavel

Смежные вопросы