Frage

Weiß jemand, wie man programmatisch aktivieren / deaktivieren Sie den Ist-Zustand der Out-of-Office-Auto-Responder in Outlook 2007?

gesucht Bereits den Objekt-Browser in VS 2008 und die Aufzählung Microsoft.Office.Interop.Outlook.OlBusyStatus gefunden, aber ich fand keine Klasse oder irgendetwas anderes diese verwendet wird.

Jede Idee ist willkommen, danke und Grüße

War es hilfreich?

Lösung

UPDATE: Aktualisierte den Code unter Verwendung von Beispielcode angepasst von diesem Blog-Post was wird besser funktioniert in einer größeren Vielfalt von Outlook-Installationen (zB diejenigen, Exchange- und PST verwenden oder mehr Exchange-Postfächer zugreifen).

Hier ist Code, der für mich auf Outlook 2007 arbeitete, den ABWESENHEITS Status von einem externen (in Outlook) EXE zu setzen:

Microsoft.Office.Interop.Outlook.Application app = new Microsoft.Office.Interop.Outlook.ApplicationClass();
Microsoft.Office.Interop.Outlook.NameSpace ns = app.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
    if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
    {
        store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
        break;
    }
}

Stellen Sie sicher, dass Sie nicht diesen Code als Administrator und Aussichten als nicht-Administrator-- laufen sonst können Sie einen sicherheitsrelevanten Fehler auf Vista bekommen.

Beachten Sie, dass es Sicherheitsdialoge in Outlook öffnet sich der Benutzer OK mit Ihnen den Zugriff auf das Outlook-Objektmodell zu gewährleisten. Das ist normal, wenn Outlook-Objektmodell von einem externen EXE zugegriffen wird.

Wenn jedoch sind Sie das Objektmodell aus einer Add-Zugriff ist der Code oben nicht ganz korrekt: anstatt ein neues Objekt Outlook.Application über den Konstruktor zu erstellen, Sie müssen Sie einen Verweis auf erhalten die vertrauenswürdige Outlook.Application Objekt aus Ihrem Add-in, wie folgt aus:

Microsoft.Office.Interop.Outlook.NameSpace ns = this.Application.Session;
foreach (Microsoft.Office.Interop.Outlook.Store store in ns.Stores)
{
    if (store.ExchangeStoreType == Microsoft.Office.Interop.Outlook.OlExchangeStoreType.olPrimaryExchangeMailbox)
    {
        store.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B", true); // false to turn off OOF
        break;
    }
}

BTW, gibt es eine gute MSDN-Artikel auf Sicherheit für Add-in, das nützlich sein kann, wenn Sie in den Sicherheitsdialoge oder Fehler ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top