В настоящее время я разрабатываю Outlook VSTO-AddIn с использованием С#. Я хочу прочитать определенные атрибуты каждого mailItem. (Например, SenderName, SenderEmailAdress и т. д..) Насколько я понял, я понял - у меня есть два варианта для достижения этого:
Небольшой фрагмент кода для доступа к свойству:
mailItem
— это объект класса MailItemClass из пространства имен Microsoft.Office.Interop.Outlook.
PropertyAccessor olPA = mailItem.PropertyAccessor;
SenderMailAddress = olPA.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0C1F001F");
Я сталкиваюсь со следующим странным поведением: Результаты различаются в зависимости от того, получаю ли я доступ к почтовому ящику через IMAP или через TCP/RPC-соединения. В первую очередь при попытке получить доступ к атрибутам mailItem, отправленного кем-то, чья Учетная запись была удалена. При подключении по протоколу IMAP запросы MAPI работают нормально, а при использовании TCP/RPC — нет.
Большинство ресурсов, которые я нахожу по этой теме, относятся к 2009–2010 гг., поэтому я не уверен, как они переводятся в версию Outlook 2016 г.
Любые подсказки, которые проливают свет на разницу между TCP/RPC в этом случае, приветствуются.
На самом деле нет никакой разницы между ними: PR_SENDER_EMAIL_ADDRESS
извлекается как MailItem.SenderEmailAddress
, так и MailItem.PropertyAccessor.GetProperty
.
Вы действительно видите свойство PR_SENDER_EMAIL_ADDRESS
, когда смотрите на элемент с помощью OutlookSpy (я его автор) или MFCMAPI?
Большое спасибо!! Я не слышал об этих приложениях. Несмотря на то, что свойство PR_SENDER_EMAIL_ADRESS установлено правильно в MFCMAPI, я получаю что-то вроде
\OU=(name of my organisatzion, ...\CN=SURNAME LASTNAME
из этого атрибута. Однако я попытался использовать PR_SENDER_SMTP_ADDRESS_A, и он отлично работает.