Получить именованное свойство MAPI из MailItem в C # - PullRequest
2 голосов
/ 28 июля 2011

Я разрабатываю пользовательский плагин для 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 года. Любая помощь очень ценится!

Ответы [ 3 ]

3 голосов
/ 29 июля 2011

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

0 голосов
/ 27 февраля 2012

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

0 голосов
/ 28 июля 2011

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

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

...