有人知道如何在Outlook 2007中以编程方式启用/禁用外出自动回复器的实际状态吗?
已经在VS 2008中搜索了对象浏览器并找到了枚举Microsoft.Office.Interop.Outlook.OlBusyStatus
,但我没有找到任何类或其他任何使用它的内容。
任何想法都表示赞赏,感谢和问候
答案 0 :(得分:3)
更新:使用从this blog post改编的示例代码更新了以下代码,该代码可以在更广泛的Outlook安装中更好地工作(例如,使用Exchange和PST或访问多个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对象。来自加载项内的受信任的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,如果您遇到安全对话框或错误,这可能很有用。