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

StackOverflow https://stackoverflow.com/questions/1608507

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top