Как создать вложение Outlook в памяти с помощью VBA

#vba #outlook #attachment

#vba #outlook #вложение

Вопрос:

Я использую VBA для отправки электронного письма с текстовым вложением. До сих пор мне нужно было физически создать файл на диске, а затем указать его путь.

Можно ли это сделать полностью в mem?

     Dim outlook As Object, mail As Object, path As string

    Set outlook = CreateObject("Outlook.Application")
    Set mail = outlook.CreateItem(0)

    ' write file contents
    path = Environ("temp")   "file.txt"
    Open path For Output As #1
    Print #1, "This is my txt"
    Close #1

    ' attach file
    With mail
        .To = "me@awesome.com"
        .body = "This is a test"
        .attachments.Add CStr(path)
        .send
    End With

    Set mail = Nothing
    Set outlook = Nothing
 

Ответ №1:

Объектная модель Outlook не предоставляет для этого никаких свойств или методов. Add Метод Attachments класса принимает только путь к файлу. Точнее, источником вложения может быть файл (представленный полным путем файловой системы с именем файла) или элемент Outlook, который составляет вложение.

Однако вы можете использовать MAPI с расширенным API низкого уровня, на котором построен Outlook. Или рассмотрите любые сторонние оболочки вокруг этого API, такие как Redemption. PR_ATTACH_DATA_BIN Содержит двоичные данные вложения, доступ к которым обычно осуществляется через интерфейс связывания и встраивания объектов (OLE) IStream . Это свойство удерживает вложение, когда значение свойства PR_ATTACH_METHOD ( PidTagAttachMethod ) ATTACH_BY_VALUE равно , что является обычным методом вложения и единственным, который требуется поддерживать.