8

Outlookのデータを操作するアプリを書いています。最初にそのデータのバックアップを作成したいと思います。連絡先やカレンダーの項目などをループして、PSTファイルに書き出すことができればと思っています。

.Netを使用して1つまたは複数のOutlookフォルダーの内容をPSTに書き込むにはどうすればよいですか?[vbまたはc#は関係ありません]

4

2 に答える 2

12

インターネットや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
于 2009-11-25T16:13:06.247 に答える
0

C#バージョン:

public Store CreateStore(string path)
{
    Application outlookApplication = new ();

    Store newPst = null;

    NameSpace outlookNamespace = outlookApplication.GetNamespace("mapi");

    outlookNamespace.Session.AddStore(path);

    foreach (Store store in outlookNamespace.Session.Stores)
    {
        if (store.FilePath == path)
        {
            newPst = store;
            break;
        }
    }

    return newPst;
}
于 2021-11-30T06:28:33.433 に答える