如何通过 VBA 修改 Outlook 2010 中的外出 (OOF) 设置

如何通过 VBA 修改 Outlook 2010 中的外出 (OOF) 设置

我在一家 MSP 工作,我们有一个邮箱,用于处理传入票务系统的电子邮件请求。我创建了一个 VBA 脚本,用于运行和处理新电子邮件等。我们正在使用Outlook 2010(32 位)我们正在Office 365 [Exchange 2013]

我们现在想要在下班后和节假日自动启用和禁用邮箱中的外出消息。我已经编写了大部分代码来检查是否有任何正在进行的会议,这些会议将在会议开始/结束时启用和禁用外出消息。这样,我们可以每天下午 5 点设置一个重复的会议来打开 OOF 消息,并在凌晨 4 点禁用它。这也适用于全天活动(例如节假日)。

我遇到的唯一问题是设置实际的 OOF 消息以启用/禁用并更改消息正文。我们希望能够根据

以下是我根据执行的各种搜索获取 OOF 状态和启用/禁用 OOF 的代码片段。看起来 CDO 1.21 是最简单的方法,但 Outlook 2010 似乎不支持 CDO 1.21。

取得 OOF 身份

Private Function QOA_GetOOFStatus()

Dim oNS As Outlook.NameSpace
Dim oStores As Outlook.Stores
Dim oStr As Outlook.Store
Dim oPrp As Outlook.PropertyAccessor
Dim OOFStatus As Boolean

OOFStatus = False


Set oNS = Application.GetNamespace("MAPI")
Set oStores = oNS.Stores

For Each oStr In oStores
    If oStr.ExchangeStoreType = olPrimaryExchangeMailbox Then
        Set oPrp = oStr.PropertyAccessor
        OOFStatus = oPrp.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B")
    End If
Next
tempValue = OOFStatus

QOA_GetOOFStatus = OOFStatus

End Function

启用/禁用 OOF 正文消息

Const PR_OOF_STATE = "http://schemas.microsoft.com/mapi/proptag/0x661D000B"

Dim oStore As Outlook.Store, oProp As Outlook.PropertyAccessor
Dim oStorageItem As Outlook.StorageItem

Set oStorageItem = Application.Session.GetDefaultFolder(olFolderInbox).GetStorage("IPM.Note.Rules.OofTemplate.Microsoft", olIdentifyByMessageClass)

oStorageItem.Body = "I am out of the office!"
oStorageItem.Save


For Each oStore In Session.Stores
    If oStore.ExchangeStoreType = olPrimaryExchangeMailbox Then

        Set oProp = oStore.PropertyAccessor
        oProp.SetProperty PR_OOF_STATE, True

    End If
Next
Set olkIS = Nothing
Set olkPA = Nothing

我猜测这与 Exchange 2010、2013 中的“内部”和“外部”OOF 回复有关。

我并不反对运行设置 OOF 消息的外部程序。

关于我该如何继续,有什么建议或想法吗?我讨厌在需要找到禁用/启用 OOF 的方法时放弃!

答案1

我决定使用远程控制实用程序并创建一个外部 powershell 脚本,将我的 AppointmentItem 正文传递进去以设置消息。远程控制实用程序将使用 EWS 设置外出办公。

相关内容