Andy Joyner
Andy Joyner

Reputation: 31

How to get email address from /o=ExchangeLabs/ou=Exchange Administrative Group...?

I am trying to automate sending an email and copy the meeting organizer through an Outlook VBA macro. My company is using Office 365.

I am using the item.GetOrganizer element to get the organizer's name.

Debug.Print oItem.GetOrganizer.Address gives:

/o=ExchangeLabs/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=c035bc5647d64d89aecbc6d3ddb5580b-Name

How do I get the email address?

Upvotes: 3

Views: 5816

Answers (2)

Thierry Dalon
Thierry Dalon

Reputation: 926

Function GetOrganizerEmail(ApptItem As Outlook.AppointmentItem) As String
Dim organizer As Outlook.AddressEntry
Set org = ApptItem.GetOrganizer
If org.Type = "SMTP" Then
    GetOrganizerEmail = org.Address
ElseIf org.Type = "EX" Then
    GetOrganizerEmail = org.GetExchangeUser.PrimarySmtpAddress
End If
End Function

Upvotes: 0

0m3r
0m3r

Reputation: 12499

Example

Option Explicit
Private Function GetMeetingOrganizer( _
                ByVal appt As Outlook.AppointmentItem) As Outlook.AddressEntry

    If appt Is Nothing Then Exit Function

    Dim PR_SENT_REPRESENTING_ENTRYID As String
        PR_SENT_REPRESENTING_ENTRYID = _
                    "http://schemas.microsoft.com/mapi/proptag/0x00410102"

    Dim organizerEntryID As String
        organizerEntryID = _
                   appt.PropertyAccessor.BinaryToString( _
                   appt.PropertyAccessor.GetProperty(PR_SENT_REPRESENTING_ENTRYID))

    Dim organizer As Outlook.AddressEntry
    Set organizer = Application.Session.GetAddressEntryFromID(organizerEntryID)

    If organizer Is Nothing Then
        Debug.Print "No organizer" ' Print on Immediate Window
    Else
        Debug.Print organizer ' Print on Immediate Window
        Dim Email_Address As String
        If organizer.Type = "SMTP" Then
            Email_Address = organizer.Address
        Else
            If organizer.Type = "EX" Then
                Email_Address = organizer.GetExchangeUser.PrimarySmtpAddress
            End If
        End If

        Debug.Print Email_Address ' Print on Immediate Window

    End If
End Function


Private Sub Example()
    Dim Item As Object

    Set Item = ActiveExplorer.Selection.Item(1)

    Debug.Print TypeName(Item)
    GetMeetingOrganizer Item

End Sub

Upvotes: 1

Related Questions