Всегда возвращать адрес электронной почты SMTP для получателя Outlook - PullRequest
0 голосов
/ 20 сентября 2019

Я видел несколько постов, где люди просят найти адрес электронной почты получателя и ссылаются на свойство MAPI: http://schemas.microsoft.com/mapi/proptag/0x39FE001E".Однако, как отмечают некоторые пользователи, не все свойства MAPI гарантированно присутствуют.Поэтому я ищу, чтобы разработать функцию, которая находит правильный способ получить этот адрес электронной почты.Для адреса электронной почты отправителей я могу сказать, если это обменный пользователь и вернуть адрес электронной почты SMTP.Есть ли здесь метод для возврата этого значения независимо от того, отсутствует ли MAPI?

Вот что у меня есть

Public Function RecipientSMTPEmailAddress(outRecip As Outlook.Recipient) As String

On Error GoTo MissingMAPIError
RecipientSMTPEmailAddress = outRecip.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E")

Exit Function
MissingMAPIError:

RecipientSMTPEmailAddress = outRecip.Address

End Function

Я ищу метод, аналогичный этому, использованный дляинформация об отправителе:

 If OutMail.SenderEmailType = "EX" Then
      SenderInfo = OutMail.Sender.GetExchangeUser.PrimarySmtpAddress
 Else
      SenderInfo = OutMail.SenderEmailAddress
 End If

Если есть лучший способ убедиться, что я получаю SMTP-адрес электронной почты, у меня все на слух!

* Отредактировано 23.09.2009 - Новый и улучшенный код дляперехватить все ошибки получателя

Public Function RecipientSMTPEmailAddress(outRecip As Outlook.Recipient) As String

On Error GoTo MissingMAPIError

RecipientSMTPEmailAddress = outRecip.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x39FE001E")

Exit Function

MissingMAPIError:

RecipientSMTPEmailAddress = RecipientSMTPEmailAddressExchange(outRecip)

End Function
Public Function RecipientSMTPEmailAddressExchange(outRecip As Outlook.Recipient) As String

On Error GoTo MissingExchangeError

RecipientSMTPEmailAddressExchange = outRecip.AddressEntry.GetExchangeUser.PrimarySmtpAddress

Exit Function

MissingExchangeError:

RecipientSMTPEmailAddressExchange = ""

End Function

1 Ответ

0 голосов
/ 20 сентября 2019

Если свойство PR_SMTP_ADDRESS отсутствует, используйте Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddrress (будьте готовы к обработке значений NULL и исключений).

...