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



Ok, é um post mais técnico, mas certamente útil para os desenvolvedores...

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 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")

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

    Set oAE = objUtils.GetAddressEntryFromID (strEntryID)

    Let R_GetPFAddress = oAE.Fields (PR_EMAIL)
 End Function


Reference:
FonteOutlookCode

Inspiration:

TagsVBA, outlook, SMTP, exchange, address, folder, pasta, e-mail, email, mail, redemption, MAPI, 

Nenhum comentário:

Postar um comentário

diHITT - Notícias