如何使用 VBA 在内存中创建 Outlook 附件
How to create an outlook attachment in-memory using VBA
我正在使用 VBA 发送带有文本附件的电子邮件。到目前为止,我需要在磁盘上物理创建文件,然后引用它的路径。
这可以完全在内存中完成吗?
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
Outlook 对象模型没有为此提供任何 属性 或方法。 Attachments
class 的 Add
方法只接受文件路径。更准确地说,附件的来源可以是一个文件(由带文件名的完整文件系统路径表示)或构成附件的 Outlook 项目。
但是,您可以使用构建 Outlook 的低级 API - 扩展 MAPI。或者考虑围绕此 API 的任何第三方包装器,例如 Redemption。 PR_ATTACH_DATA_BIN
包含通常通过对象链接和嵌入 (OLE) IStream
接口访问的二进制附件数据。当 PR_ATTACH_METHOD
(PidTagAttachMethod
) 属性 的值为 ATTACH_BY_VALUE
时,此 属性 持有附件,这是通常的附件方法,也是唯一需要的附件支持一下。
我正在使用 VBA 发送带有文本附件的电子邮件。到目前为止,我需要在磁盘上物理创建文件,然后引用它的路径。
这可以完全在内存中完成吗?
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
Outlook 对象模型没有为此提供任何 属性 或方法。 Attachments
class 的 Add
方法只接受文件路径。更准确地说,附件的来源可以是一个文件(由带文件名的完整文件系统路径表示)或构成附件的 Outlook 项目。
但是,您可以使用构建 Outlook 的低级 API - 扩展 MAPI。或者考虑围绕此 API 的任何第三方包装器,例如 Redemption。 PR_ATTACH_DATA_BIN
包含通常通过对象链接和嵌入 (OLE) IStream
接口访问的二进制附件数据。当 PR_ATTACH_METHOD
(PidTagAttachMethod
) 属性 的值为 ATTACH_BY_VALUE
时,此 属性 持有附件,这是通常的附件方法,也是唯一需要的附件支持一下。