Как я могу создать файл Outlook PST, используя .Net? - PullRequest
7 голосов
/ 12 ноября 2009

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

Как я могу записать содержимое одной или нескольких папок Outlook в PST, используя .Net? [VB или C # не имеет значения]

1 Ответ

10 голосов
/ 25 ноября 2009

Мне удалось собрать этот код из множества примеров в Интернете и документах 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
...