Я пишу надстройку 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. Однако мы стараемся избегать использования сторонних библиотек.