正在保存 "Device Independent Bitmap" 个附件

Saving "Device Independent Bitmap" attachment

如何正确保存这种附件(来自签名邮件)?我用 .SaveAsFile 方法保存了它,但它没有任何扩展名,没有应用程序可以打开它。

Set OutItem = Application.ActiveExplorer.Selection.Item(1)

For Each att In OutItem.Attachments
    att.SaveAsFile "C:\Temp\" & att.DisplayName
Next

附件的DisplayName 属性 class returns 一个代表名字的字符串,可以不用是实际的文件名,显示在图标下方代表嵌入式附件。

尝试使用 FileName 属性 其中 returns 表示附件文件名的字符串。

也可以在代码中明确指定文件扩展名,例如:

For Each att In OutItem.Attachments
 att.SaveAsFile "C:\Temp\" & att.DisplayName & ".docx"
Next

对于 olOlE 附件,您需要将附件作为 IStorage COM 对象打开并从存储中的一个流中提取数据(可能被破坏)- 您可以在 [=12 中看到数据=](我是它的作者):select 消息,单击 OutlookSpy 功能区上的 IMessage 按钮,转到 GetAttachmentTable 选项卡,双击其中一个附件。 Select PR_ATTACH_DATA_OBJ 属性,右击,IMAPIProp::OpenProperty,select IID_IStorage。无法使用 Outlook 对象模型

在 VBA 中访问数据

如果使用Redemption is an option (I am also its author), its RDOAttachment.SaveAsFile方法足够智能,可以从存储中提取BMP、EMF、PDF、Excel等文件数据。像下面这样的东西(在我的脑海中)应该可以完成这项工作:

  set Session = CreateObject("Redemption.RDOSession")
  Session.MAPIOBJECT = Application.Session.MAPIOBJECT
  set rMsg = Session.GetRDOObjectFromOutlookObject(Application.ActiveExplorer.Selection.Item(1))
  For Each att In rMsg.Attachments
    att.SaveAsFile "C:\Temp\" & att.FileName
  Next