有人知道如何在Outlook2007中以编程方式启用/禁用外出自动回复程序的实际状态吗?
我已经在VS2008中搜索了对象浏览器,找到了枚举Microsoft.Office.Interop.Outlook.OlBusyStatus
,但我没有找到任何使用它的类或任何其他东西。
任何想法都值得欣赏,谢谢并致以敬意
发布于 2009-11-07 18:47:43
更新:使用改编自 的示例代码更新了下面的代码,该示例代码在更广泛的Outlook安装(例如,同时使用Exchange或访问多个Exchange邮箱的安装)中将更好地工作。
下面是我在Outlook 2007上使用的代码,用于从外部(到Outlook) EXE设置OOF状态:
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;
}
}
请确保您没有以管理员身份运行该代码,而以非管理员身份运行outlook --否则,您可能会在Vista上收到与安全相关的错误。
请注意,它将在Outlook中弹出安全对话框,以确保用户同意您访问Outlook对象模型。当从外部EXE访问outlook对象模型时,这是正常的。
但是,如果您从外接程序访问对象模型,则上面的代码并不完全正确:您需要从外接程序内部获取对受信任的Outlook.Application对象的引用,而不是通过构造函数创建新的Outlook.Application对象,如下所示:
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;
}
}
顺便说一句,插件的安全性方面有一个很好的MSDN article,如果你遇到安全对话框或错误,它可能会很有用。
https://stackoverflow.com/questions/1679008
复制