Como modificar as configurações de ausência temporária (OOF) no Outlook 2010 via VBA

4

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.

Adquirir status 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

Ativar / desativar o OOF com mensagem do corpo

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!

    
por Zach 23.07.2013 / 19:21

1 resposta

1

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.

    
por 24.07.2013 / 01:01