Запросить глобальный список адресов Outlook из Access VBA - PullRequest
0 голосов
/ 08 июля 2019

Я пишу некоторый код Access VBA, чтобы подсчитать, сколько раз конкретный адрес электронной почты был отправлен по электронной почте. Проблема, с которой я сталкиваюсь, заключается в том, что при первой отправке письма оно покидает наш сервер Exchange как

email1@domain.com

Но как только человек отвечает на это письмо, все последующие сообщения отображаются как

'lastname, firstname'

Я использую приведенный ниже код VBA для поиска примера email1@domain.com, но как я могу использовать access vba для получения имени из глобального списка адресов?

Function Test()

Dim searchEmail As String: searchEmail = "'abc123@abc123.com'"
Dim olApp As Outlook.Application
Dim olNs As NameSpace
Dim Fldr As MAPIFolder
Dim olReply As Outlook.MailItem
Dim msg As Object
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set Fldr = olNs.GetDefaultFolder(olFolderSentMail)

For Each msg In Fldr.Items
    If TypeName(msg) = "MailItem" Then
        If msg.To = searchEmail Then
            'now we start counting
        End If
    End If
Next msg

End Function

1 Ответ

1 голос
/ 08 июля 2019

Аналогично ответу, который я выложил здесь , вместо проверки свойства To объекта MailItem (который, согласно связанной документации, содержит только отображаемые имена), запрашивает содержимое коллекции Recipients и для каждого объекта Recipient проверяет значение, хранящееся в Address свойство для вашей переменной searchEmail.

Свойство Address будет постоянно содержать адрес электронной почты получателя, а не отображаемое имя.

Товместо:

For Each msg In Fldr.Items
    If TypeName(msg) = "MailItem" Then
        If msg.To = searchEmail Then
            'now we start counting
        End If
    End If
Next msg

Вы можете использовать что-то вроде:

For Each msg In Fldr.Items
    If TypeName(msg) = "MailItem" Then
        For Each rcp In msg.Recipients
            If rcp.Address = searchEmail Then
                'now we start counting
            End If
        Next rcp
    End If
Next msg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...