Получение Outlook :: _ MailItem из Outlook :: Attachment (встроенная электронная почта) - PullRequest
3 голосов
/ 15 мая 2009

Я пишу надстройку Outlook, используя VC / ATL. Этот конкретный плагин принимает выбранные сообщения электронной почты и записывает их на диск. Он также записывает все связанные вложения на диск. Затем мы читаем все в нашем приложении за пределами Outlook.

Используя объектную модель Outlook, это довольно просто, так как _MailItem и Attachment имеют методы SaveAs. Проблема возникает, когда вложение представляет собой встроенное электронное письмо, которое мы также хотим разбить на части и сохранить как отдельные файлы.

В идеальном мире я мог бы запросить вложение для интерфейса _MailItem и просто обработать его как обычную часть выделения. Но QueryInterface возвращает «нет интерфейса».

Мне нужно решение, которое работает с Outlook XP (2002) через Outlook 2010. Я знаю, что в Outlook 2007 есть метод (CreateItemFromTemplate) для объекта приложения, который позволяет мне вернуть MailItem из сохраненного сообщения на диске , но это не сработает для Outlook XP / 2003. Мне также нужна информация об отправителе / ​​получателе.

Я также знаю, что сторонняя библиотека Redemption может сделать это с помощью Extended MAPI. Однако мы стараемся избегать использования сторонних библиотек.

1 Ответ

2 голосов
/ 01 июня 2009

Если вы не хотите использовать сторонние библиотеки, вам, вероятно, придется написать собственный синтаксический анализатор MSG-файлов для извлечения встроенных почтовых элементов.

Кроме того, если вы действительно серьезно относитесь к разработке надстроек Outlook, то в конечном итоге вы все равно будете использовать Redemption рано или поздно, так зачем ждать? Это определенно стоит стоит больше, чем его авторский вес в золоте.

...