4

Я работаю в MSP, и у нас есть один почтовый ящик, который мы используем для обработки входящих запросов электронной почты в нашу систему продажи билетов. Я создал сценарий VBA, который запускает и обрабатывает новые электронные письма и тому подобное. Мы используем Outlook 2010 (32-разрядная версия) и работаем в Office 365 [Exchange 2013].

Теперь мы хотим автоматически включить и отключить сообщение об отсутствии на работе в почтовом ящике в нерабочее время и в праздничные дни. У меня уже есть большая часть кода, написанного для проверки любых текущих собраний, которые бы включали и отключали Out of Office, когда собрания начинаются / заканчиваются. Таким образом, мы можем настроить повторное собрание каждый день в 17:00, чтобы включить сообщение OOF, и в 4:00, чтобы отключить его. Это также будет работать с событиями на весь день (например, праздники).

Единственная проблема, с которой я сталкиваюсь, - это установка фактического сообщения 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-сообщения.

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

1 ответ1

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .