2009-11-12 1 views
7

저는 Outlook 데이터를 조작 할 앱을 작성하고 있습니다. 그 데이터의 백업을 만들고 싶습니다. 연락처/일정 관리 항목 등을 반복해서 PST 파일에 기록 할 수 있기를 바랍니다..Net을 사용하여 Outlook PST 파일을 만들려면 어떻게해야합니까?

.Net을 사용하여 PST에 1 또는 여러 Outlook 폴더의 내용을 쓰려면 어떻게해야합니까? [VB 또는 C# 상관 없음]

답변

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가 없으면 PST를 만듭니다. ns.Session.Folders.GetLast()는 해당 PST/폴더 – brendan

+0

에 대한 핸들을 제공하므로 코드의 "pst"변수 (2 곳)은 "oFolder"가되는 오타입니다? – akavel