有人知道如何在 Outlook 2007 中以编程方式启用/禁用外出自动回复的实际状态吗?
已经在 VS 2008 中搜索了对象浏览器并找到了枚举Microsoft.Office.Interop.Outlook.OlBusyStatus
,但我没有找到任何使用它的类或其他任何东西。
任何想法表示赞赏,谢谢和问候
有人知道如何在 Outlook 2007 中以编程方式启用/禁用外出自动回复的实际状态吗?
已经在 VS 2008 中搜索了对象浏览器并找到了枚举Microsoft.Office.Interop.Outlook.OlBusyStatus
,但我没有找到任何使用它的类或其他任何东西。
任何想法表示赞赏,谢谢和问候
更新:使用改编自这篇博文的示例代码更新了下面的代码,这将在更广泛的 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 的引用,而不是通过构造函数创建新的 Outlook.Application 对象.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 文章,如果您遇到安全对话框或错误,这可能会很有用。