如何在Outlook任务项中获取OLE附件

时间:2015-08-07 16:34:08

标签: image outlook attachment

如果它包含图像,我无法获得整个Outlook TaskItem。在RTFBody属性中只有文本,但图像存储在附件类型olOLE中。我只能通过Attachment.SaveAsFile方法将它们保存到文件中。但是在OLE附件的情况下,我不知道保存文件的格式。

您能否告诉我,如何获取附件的二进制内容。还是存在另一种如何获得全身的方式?

谢谢。此致,Petr

1 个答案:

答案 0 :(得分:0)

OLE附件数据以IStorage接口格式存储。数据的实际格式取决于用于创建数据的应用程序(MSPaint,Excel等)。 Outlook对象模型不允许您使用Attachment.SaveAsFile

保存此类附件

根据您使用的语言(C ++或Delphi最好),您需要打开PR_ATTACH_DATA_OBJ属性作为IStorage,然后提取数据(IAttach :: OpenProperty(PR_ATTACH_DATA_OBJ,IID_IStorage,...)) 。使用OutlookSpy查看消息 - 单击IMessage按钮,转到GetAttachmentTable选项卡,双击OLE附件,选择PR_ATTACH_DATA_OBJ,右键单击,IAMPIProp :: OpenProperty。

如果使用Redemption是一个选项,它会提取十几种最常用格式(MSPaint,Excel,Word,PDF等)的附件数据:

set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set OutlookMsg = Application.ActiveExplorer.Selection.Item(1)
set Msg = Session.GetRDOObjectFromOUtlookObject(OutlookMsg)
for each attach in Msg.Attachments
  attach.SaveAsFile "c:\temp\" & attach.FileName
next