Как получить доступ к вложению электронной почты Outlook в C #, не сохраняя его в новом месте? - PullRequest
7 голосов
/ 22 октября 2009

Я использую Microsoft.Office.Interop.Outlook в C # для доступа к почтовому ящику и поиска сообщений с определенными вложенными файлами. Мне нужно взаимодействовать с вложениями.

В настоящее время я сохраняю файл в новом месте и получаю к нему доступ оттуда. Этот процесс копирования замедляет меня. В идеале я хотел бы получить доступ к файлу, где бы он ни хранился в памяти, но поле Outlook.Attachment.PathName возвращает ноль.

Сообщения хранятся на сервере Exchange.

Можно ли получить к ним прямой доступ или мне нужно продолжить сохранение файлов?

Ответы [ 2 ]

3 голосов
/ 25 октября 2009

Я не знаю, возможно ли это каким-либо образом через объектную модель Outlook, но MAPI, безусловно, позволяет вам это.

Вам необходимо открыть сообщения MAPIObject, IMessage. Оттуда используйте IMessage::OpenAttach(), который возвращает IAttach.
Размер вложения сохраняется в PR_ATTACH_SIZE, фактические данные в PR_ATTACH_DATA_BIN.

Как всегда, Искупление , вероятно, имеет более простой способ сделать это.

редактировать:
Доступ через MAPI - это то, что Outlook все равно делает внутренне - должен быть достаточно быстрым, по крайней мере, при использовании режима кэширования Exchange.

3 голосов
/ 22 октября 2009

Outlook.Attachment.PathName подразумевает расположение диска. Вложение - это файл; если вы хотите взаимодействовать с ним, вы должны обращаться с ним как с файлом, а это значит сохранять его на локальном диске.

Объект Outlook.Attachment на самом деле не содержит вложенный файл; он содержит ссылку на вложенный файл с некоторыми связанными метаданными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...