Ошибка при открытии электронной почты с помощью Outlook Outlook - PullRequest
0 голосов
/ 05 июля 2011

Вопрос: Я получаю следующее сообщение об ошибке при открытии файлов .MSG с помощью Outlook API для открытия электронных писем:

Невозможно привести COM-объект типа 'System .__ ComObject' для типа интерфейса 'Microsoft.Office.Interop.Outlook.MailItem. Эта операция не удалась, потому что QueryInterface вызов на COM компонент для интерфейса с IID '{00063034-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: Нет такой интерфейс поддерживается (исключение от HRESULT: 0x80004002 (E_NOINTERFACE)).

Файлы MSG открываются нормально в Outlook, и я уверен, что эти формы являются стандартными почтовыми формами Outlook.

Какая наиболее вероятная причина этой ошибки?


Справочная информация: Один из моих коллег экспортировал большое количество почтовых ящиков из Exchange в качестве файлов PST, а затем запустил инструмент для файлов PST, чтобы создать файловую структуру, напоминающую исходный почтовый ящик, заполненный файлами MSG. , Например:

\ USERNAME
\ USERNAME \ INBOX
\ USERNAME \ ПОСЛАН
\ USERNAME \ DRAFTS
\ USERNAME \ УДАЛИТЬ

Затем я сканирую эти папки на наличие файлов .MSG и пытаюсь открыть их с помощью Outlook API.

Outlook.Application app = new Microsoft.Office.Interop.Outlook.Application();

Outlook.NameSpace ns = app.GetNamespace("MAPI");

Outlook.MailItem item = (Outlook.MailItem)ns.OpenSharedItem(EmailPath);

Subject = item.Subject;

1 Ответ

0 голосов
/ 05 января 2017

Все * Объекты Item в OOM реализуют свойство Type. Получить это свойство динамически, используя отражение вместо приведения возвращенного объекта в MailItem.

ОК, используйте оператор «as» для проверки интересующего вас интерфейса, не вызывая исключения.

...