Как изменить параметры вне офиса (OOF) в Outlook 2010 через VBA

Я работаю на 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

Я предполагаю, что есть что-то делать с "внутренними" и "внешними" ответами OOF, которые представлены в Exchange 2010, 2013.

Я не против запуска внешней программы, которая устанавливает сообщения об отсутствии на работе.

какие-либо предложения или мысли о том, как я могу продолжить? Я бы не хотел сдаваться, когда мне просто нужно найти способ отключить/включить OOF!

24
задан Zach
07.03.2023 2:21 Количество просмотров материала 2778
Распечатать страницу

1 ответ

Я решил использовать EWSOofUtil.dll и создайте внешний сценарий powershell для передачи основного текста AppointmentItem, чтобы задать сообщение. The EWSOofUtil.dll установит вне офиса с помощью EWS.

1
отвечен Zach 2023-03-08 10:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх