VBA Outlook - Obtendo o endereço SMTP da um pasta pública do Exchange

Inline image 1

Blog Office VBA | Blog Excel | Blog Access |


Cada pasta na hierarquia do Exchange Server Public pode ter um endereço de e-mail. Caso saiba o endereço do SMTP, pode enviar mensagens, ou mesmo pedidos de reunião (Invites), diretamente desta pasta. 


O código abaixo mostra como obter o endereço da pasta usando a biblioteca Redemption para evitar o desencadeamento solicitado pela segurança do Outlook.

Também pode utilizar a mesma técnica com o objeto AddressEntry CDO, mas obviamente isso provocaria avisos de segurança em muitos ambientes (versões/instalações) do MS Outlook.

Use esta versão de código com uma biblioteca qualquer de 'Resgate' de terceiros (Por exemplo o SafeOutlookLibrary), para evitar os avisos de segurança geradas por tentativas de acesso aos objetos e as propriedades de endereço quando o Outlook E-mail Security Update estiver instalado.


Function R_GetPFAddress(objFolder)
    Dim oSafeFolder 'As New Redemption.MAPIFolder
    Dim objUtils 'As Redemption.MAPIUtils
    Dim arrBytes
    Dim strAddress, strEntryID 'As String
    Dim oAE 'As Redemption.AddressEntry

    Const PR_ADDRESS_BOOK_ENTRYID = & H663B0102
    Const PR_EMAIL = & H39FE001E

    On Error Resume Next

    Set objUtils = CreateObject ("Redemption.MAPIUtils")
    Set oSafeFolder = CreateObject ("Redemption.MAPIFolder")

    oSafeFolder.Item = objFolder
    arrBytes = oSafeFolder.Fields (PR_ADDRESS_BOOK_ENTRYID)
    strEntryID = objUtils.HrArrayToString (arrBytes)

    Set oAE = objUtils.GetAddressEntryFromID (strEntryID)

    R_GetPFAddress = oAE.Fields (PR_EMAIL)
 End Function


Reference:

TagsVBA, Outlook, SMTP, exchange, server, addressentry

Nenhum comentário:

Postar um comentário

diHITT - Notícias