VSTO Outlook.Recipients Value Отображение внешних адресов электронной почты иначе, чем внутренние адреса электронной почты - PullRequest
0 голосов
/ 18 января 2019

У нас есть надстройка Outlook VSTO, которая проверяет домен Outlook.Recipients, чтобы выяснить, выходит ли адресат вне нашей сети

Dim objRecipients As Outlook.Recipients

Так, скажем, есть 2 получателя, которых мы хотим зациклитьи проверьте домен:

Do While objRecipients.Count >= loopCount
  If InStr(1, objRecipients(loopCount).Address, "@") Then
    ...
  End If
  Loop +=1
Loop

Для внешнего объекта objRecipient (loopCount) .Адрес, который мы видим, скажем:

  gmail.com

Что хорошо.

Однако для внутренних адресов мы, кажется, видим адреса LDAP / Exchange вместо адресов SMTP, как это:

/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=9asd9asd9d9d9asd9asd9asd9asd9asd9asd-Fred Smith"

Это, похоже, только начинает происходить, но не уверен, почему или как решить эту проблему.

Есть идеи, почему это происходит?

Спасибо

1 Ответ

0 голосов
/ 18 января 2019

После этой статьи мы помогли решить нашу проблему:

https://docs.microsoft.com/en-us/office/vba/outlook/Concepts/Address-Book/obtain-the-e-mail-address-of-a-recipient

Нам нужно было использовать свойство Outlook.PropertyAccessor, чтобы получить правильный SMTP-адрес:

  Dim objRecipients As Outlook.Recipients

  Dim pa As Outlook.PropertyAccessor
  Const PR_SMTP_ADDRESS As String = 
  "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"

        Do While objRecipients.Count >= loopCount

            'set propertyaccessor object
            pa = objRecipients(loopCount).PropertyAccessor

           'set propertyaccessor domain based on smtp address
           paDomain = pa.GetProperty(PR_SMTP_ADDRESS)

           Loop +=1
 Loop
...