更新:使用改编自的示例代码更新了以下代码
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对象模型时,这是正常的。
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