Надежный способ получения адреса электронной почты отправителя с помощью Redemption
Я получаю адрес электронной почты отправителя в Outlook, используя RDOMail.SenderEmailAddress
свойство, но я недавно понял, что в некоторых случаях для учетных записей электронной почты SMTP или IMAP, это свойство null
иногда, сразу после того, как электронная почта прибывает в почтовый ящик.
Существует довольно запутанный способ получения адреса электронной почты отправителя с помощью библиотеки взаимодействия Outlook: https://msdn.microsoft.com/library/office/ff184624.aspx
Тем не менее, это не работает с выкупом RDOMail
объект, потому что RDOAddressEntry
интерфейсу не хватает AddressEntryUserType
и GetExchangeUser
метод.
Документация RDOAddressEntry
объект говорит следующее о SMTPAddress
имущество:
Строка, только для чтения. Возвращает SMTP-адрес данного пользователя. Если тип адреса "SMTP", возвращаемое значение совпадает с тем, которое возвращает свойство Address. Если типом адреса является "EX", Redemption пытается получить свойство PR_SMTP_ADDRESS, в случае неудачи извлекает SMTP-адрес по умолчанию из свойства расширенного MAPI PR_EMS_AB_PROXY_ADDRESSES.
Похоже, что это может быть более надежный способ получить адрес отправителя, если я сделаю это в моем методе:
if (rdoMail.SenderEmailAddress != null) return rdoMail.SenderEmailAddress;
if (rdoMail.Sender != null) return rdoMail.Sender.SMTPAddress;
return null;
Поскольку у меня нет надежного способа проверить свою теорию, я ищу здесь помощь, чтобы узнать, есть ли у кого-то больше опыта в решении этой проблемы.
Заранее спасибо.
1 ответ
Я не могу представить, почему SenderEmailAddress
будет нулевым, если у вас нет частично загруженного элемента (специфично для IMAP4). Нет причин иметь AddressEntryUserType
или же GetExchangeUser
Метод - все, что вам нужно, это тип адреса - если это "EX", у вас есть пользователь GAL, в противном случае SMTP-адрес.
Чтобы получить SMTP-адрес отправителя, проверьте SenderEmailType
имущество. Если это что-то, кроме "EX", просто используйте SenderEmailAddress
имущество. Если это "EX", прочитайте PidTagSenderSmtpAddress
использование имущества RDOMail.Fields["http://schemas.microsoft.com/mapi/proptag/0x5D01001F"]
, Если вы вернетесь null, проверьте, RDOMail.Sender
не является нулевым и читать RDOMail.Sender.SMTPAddress
имущество.