#outlook-addin
#outlook-добавление
Вопрос:
Возможно ли получить содержимое вложения (файл eml) в API надстройки Outlook?. Если да, пожалуйста, объясните, как это сделать.
Ответ №1:
Вызов Attachment.SaveAsFile
для сохранения вложения.
Если вы пытаетесь получить доступ к содержимому вложения, не сохраняя вложение в виде файла, объектная модель Outlook вам не поможет. Вы можете использовать либо расширенный MAPI (только C или Delphi) и открывать данные вложения в виде потока ( IAttach::OpenProperty(PR_ATTACH_DATA_BIN, IID_IStream, ...)
), либо использовать Redemption (я его автор) — его объекты вложения раскрывают AsText
свойства , AsArray
, и т. Д.
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set item = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
for each attach in item.Attachments
MsgBox attach.AsText
next
Комментарии:
1. Я хотел бы отобразить содержимое вложения в надстройке, которую я разработал.
2. Так в чем проблема? Считывание данных вложения файла в переменную?
3. ДА. Возможно ли это сделать? (файл в формате txt)
4. Вы можете сохранить вложение в виде файла с помощью приложения Attachment . Сохраните файл, а затем прочитайте содержимое поля. Вы пытаетесь прочитать содержимое вложения, не сохраняя сначала файл?
5. Да, я пытаюсь прочитать содержимое вложения без сохранения файла.
Ответ №2:
Здесь есть пример того, как это сделать:
Использование:
var attachmentData =
attachment.PropertyAccessor.GetProperty(
PR_ATTACH_DATA_BIN);
Но когда я попытался это сделать, я просто получил исключение.
Комментарии:
1. Это приведет к сбою для больших (16 КБ или около того) вложений.