Share via


Synchronisieren von Outlook mit einem SharePoint-Ordner

In diesem Beispiel wird veranschaulicht, wie programmgesteuert eine Verbindung zwischen Outlook und einem SharePoint-Ordner hergestellt und die Ordnerinhalte synchronisiert werden können.

Beispiel

Hinweis

Das folgende Codebeispiel ist ein Auszug aus Programming Applications für Microsoft Office Outlook 2007.

In Outlook können Sie Kalender, Kontaktlisten, Aufgabenlisten, Diskussionsrunden und Dokumentbibliotheken mit SharePoint-Ordnern synchronisieren. Based on the URL provided upon synchronization, Outlook will create a new folder of the same base type as the SharePoint folder. Beim Synchronisieren mit einem SharePoint-Kalenderordner zum Beispiel wird eine neuer Kalenderordner in Outlook erstellt. SharePoint-Synchronisierungsordner werden in eigenen persönlichen Outlook-Ordnern (PST-Datei) außerhalb des Benutzerpostfachs gespeichert. Sie können eine Verbindung mit einem SharePoint-Ordner mit der OpenSharedFolder(String, Object, Object, Object)-Methode des NameSpace-Objekts herstellen. Note that you must use a stssync:// URL that provides details about the SharePoint server, folder path, and other information that Outlook needs to open a SharePoint folder.

When connecting to a SharePoint folder programmatically, you must determine the proper URL to use to create the sharing relationship. Da die stssync://-URL für den Ordner nicht auf der SharePoint-Benutzeroberfläche bereitgestellt wird, müssen Sie den Zielordner in Outlook manuell verknüpfen. Verwenden Sie dann das erste Verfahren, DisplaySharePointUrl, im folgenden Codebeispiel, um die richtige URL abzurufen. DisplaySharePointUrl verwendet das Table-Objekt, um nach Freigabebindungsinformationen im aktuellen Ordner für das aktive Explorer-Fenster zu suchen. Wenn eine oder mehrere Bindungskontexte gefunden werden, werden die URLs für alle verfügbaren Freigabekontexte angezeigt.

Jetzt haben Sie die richtige URL zum Erstellen der Freigabebeziehung. Um den neuen SharePoint-Ordner in Outlook zu synchronisieren, kopieren Sie die URL und fügen Sie sie in die Zuweisung der Zeichenfolgenvariable „CalendarUrl“ in dem zweiten Verfahren „AddSpsFolder“. AddSpsFolder automatisiert die Synchronisierung des neuen SharePoint-Ordners in Outlook, indem die NameSpace.OpenSharedFolder-Methode mit einer stssync://-URL (in diesem Fall die URL, die im DisplaySharePointUrl-Verfahren generiert wurde) verwendet wird. AddSpsFolder bietet auch einen benutzerdefinierten Ordnernamen „Example SPS Calendar“ und weist Outlook an, die standardmäßige Gültigkeitsdauer (Time to Live, TTL) für den Ordner zu verwenden. SharePoint-Ordner laden immer Elementanlagen herunter, daher müssen Sie dies hier nicht angeben.

Wenn Sie Visual Studio verwenden, um dieses Codebeispiel zu testen, müssen Sie der Microsoft Outlook 15.0-Objektbibliothekkomponente zuerst einen Verweis hinzufügen und die Outlook-Variable angeben, wenn Sie den Microsoft.Office.Interop.Outlook-Namespace importieren. Die using-Anweisung darf im Codebeispiel nicht direkt vor den Funktionen stehen, sondern muss vor der öffentlichen Class-Deklaration hinzugefügt werden. Die folgende Codezeile zeigt, wie Sie den Import und die Zuweisung in C# vornehmen.

using Outlook = Microsoft.Office.Interop.Outlook;
private void DisplaySharePointUrl()
{
    const string PROP_SYNC_URL = 
        "http://schemas.microsoft.com/mapi/id/{00062040-0000-0000-C000-000000000046}/8A24001E";

    Outlook.Folder folder = Application.ActiveExplorer().CurrentFolder as Outlook.Folder;
    Outlook.Table table = folder.GetTable(Type.Missing, Outlook.OlTableContents.olHiddenItems);
    table.Columns.RemoveAll();
    table.Columns.Add("MessageClass");
    table.Columns.Add(PROP_SYNC_URL);

    StringBuilder sb = new StringBuilder();
    while (!table.EndOfTable)
    {
        Outlook.Row row = table.GetNextRow();
        string msgClass, spsUrl;
        msgClass = row["MessageClass"] as string;
        spsUrl = row[PROP_SYNC_URL] as string;

        if (msgClass == "IPM.Sharing.Binding.In")
        {
            sb.Append(spsUrl);
            sb.Append("\r\n");
        }
    }
    if (sb.Length > 0)
    {
        System.Windows.Forms.MessageBox.Show(
            "The following SharePoint Folder URLs were found:\r\n" + sb.ToString());
    }
    else
    {
        System.Windows.Forms.MessageBox.Show("No SharePoint URLs were found in this folder.");
    }
}

private void AddSpsFolder()
{
    string calendarUrl = "stssync://sts/?ver=1.1&type=calendar&cmd=add-folder&base-url=
        https://example.org/calendar&list-url=/Lists/Calendar/calendar.aspx&guid=&site-name=
        Example%20Site&list-name=Calendar";
    string folderName = "Example SPS Calendar";
    bool useDefaultTTL = true;
    Outlook.Folder calendarFolder =
        Application.Session.OpenSharedFolder(calendarUrl, folderName, Type.Missing, useDefaultTTL) 
        as Outlook.Folder;
    Outlook.Explorer exp =
        Application.Explorers.Add(calendarFolder, Outlook.OlFolderDisplayMode.olFolderDisplayNormal);
    exp.Display();
}

Siehe auch