Eu decidi usar EWSOofUtil.dll e criar um script PowerShell externo para passar meu texto do corpo AppointmentItem para definir a mensagem. O EWSOofUtil.dll definirá o Ausência Temporária usando o EWS.
Eu trabalho para um MSP e temos uma única caixa de correio que usamos para processar solicitações de e-mail recebidas em nosso sistema de bilhetagem. Eu criei um script VBA que executa e processa novos e-mails e tal. Estamos usando o Outlook 2010 (32 bits) e estamos em execução no Office 365 [Exchange 2013] .
Agora, queremos ativar e desativar automaticamente uma mensagem de ausência temporária na caixa de correio para depois do horário e feriados. Já tenho a maior parte do código escrito para verificar se há alguma reunião em andamento que possa ativar e desativar o Ausência Temporária quando as reuniões começarem / terminarem. Desta forma, podemos configurar uma reunião recorrente todos os dias às 17:00 para ligar a mensagem OOF e às 4:00 para desativá-lo. Isso também funcionará com todos os eventos do dia (como feriados).
O único problema que estou tendo é definir a mensagem OOF real para ativar / desativar e alterar o corpo da mensagem. Gostaríamos de poder definir o corpo da mensagem com base no
Abaixo estão os trechos que eu tenho que obter o status OOF e ativar / desativar OOF com base em várias pesquisas que realizei. Parece que o CDO 1.21 seria o caminho mais fácil, mas o Outlook 2010 parece não suportar o CDO 1.21.
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
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
Eu estou supondo que há algo a ver com as respostas OOF "Internas" e "Externas" que são apresentadas no Exchange 2010, 2013.
Não me oponho a executar um programa externo que defina mensagens OOF.
Alguma sugestão ou opinião sobre como posso prosseguir? Eu odiaria ter que desistir quando eu só preciso encontrar o caminho para desativar / ativar OOF!