Office 2007: Programmatische Kontrolle Out-of-Office-Assistenten?
-
16-09-2019 - |
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
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.