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