Можно ли получить содержимое вложения — Outlook Add-in API

#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 КБ или около того) вложений.