#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
равно , что является обычным методом вложения и единственным, который требуется поддерживать.