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

3522
Zach

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

4
это не просто `OutOfOffice True` или` false`? Raystafarian 10 лет назад 0
@Raystafarian Я не совсем уверен, что ты имеешь в виду? Zach 10 лет назад 0
Да, я думаю, что это старо. Поскольку ООО - это `правило`, для включения / выключения нет * переключения *, просто применяется правило или нет. Извините, я не могу помочь. Raystafarian 10 лет назад 0

1 ответ на вопрос

1
Zach

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

Похожие вопросы