Получить именованное свойство MAPI из MailItem в C#

Я разрабатываю пользовательский плагин для Outlook 2010 в C#. Я впервые использую C# (обычно я Java-парень).

В сообщении есть именованное (настраиваемое) свойство MAPI, к которому я хотел бы получить доступ, и у меня возникают проблемы при этом. Насколько я понимаю, в Outlook 2007 был представлен объект PropertyAccessor, который обеспечивает легкий доступ к именованным свойствам MAPI. Я следовал инструкциям из следующей документации:

http://msdn.microsoft.com/en-us/library/ff868915.aspx

Я вижу указанное свойство MAPI, к которому я хочу получить доступ, в сообщении с помощью Outlook Spy. Из Outlook Spy я могу получить следующую информацию о собственности:

GUID:    {00020329-0000-0000-C000-000000000046}
Tag num: 0x80BE0102
ID:      PR.AFU.MESSAGE.RETRIEVE.INFO
Type:    PT_BINARY

Поэтому я попробовал следующий код (объект mail является допустимым экземпляром MailItem):

mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-000000000046}/80BE0102");

Это производит следующее исключение:

The property "http://schemas.microsoft.com/mapi/id/{00020329-0000-0000-C000-000000000046}/80BE0102" is unknown or cannot be found

Поэтому мне интересно, как на самом деле получить эту собственность? Я неправильно формирую ссылку на пространство имен? Или мне нужно использовать подход, описанный в этом примере:

http://www.outlookcode.com/codedetail.aspx?id=1112

Насколько я понимаю, это было необходимо только для версий Outlook, выпущенных до 2007 года. Любая помощь высоко ценится!

4 ответа

Решение

OutlookSpy предоставит вам имя свойства DASL в поле редактирования DASL в окне IMessage.

OutlookSpy (я его автор) предоставит вам имя свойства DASL в поле редактирования DASL в окне IMessage (выберите сообщение с установленным свойством, нажмите кнопку IMessage, выберите свойство, посмотрите на поле редактирования DASL)

Microsoft MFCMapi также является отличным инструментом для поиска DASL и просмотра всех свойств MAPI.

Что произойдет, если вы попробуете

mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x80BE0102");

?

Другие вопросы по тегам