'application / ole'附件的文件扩展名

时间:2013-10-11 10:37:47

标签: content-type ole file-type mapi

RTF格式的电子邮件可以嵌入内嵌附件。 MAPI提供内联附件的文件名,但没有扩展名。如何知道扩展?

MAPI将内容描述为“图片(设备无关位图)”。我可以依赖这些数据来计算文件扩展名为BMP。但这适用于BMP,但不适用于PDF,WORD,EXEL。我想知道是否存在适用于所有内容的解决方案(如查看REGISTRY),而不会更改每种文件类型的代码。

通过读取附件的MAPI属性生成的Mime标头。您看到附件缺少扩展名。

Content-Disposition: inline; filename=ATT87266
Content-Transfer-Encoding: Base64
content-type: application/ole;name="Picture (Device Independent Bitmap)"
content-description: Picture (Device Independent Bitmap)

1 个答案:

答案 0 :(得分:1)

嵌入式OLE附件不是文件,它们是IStorage COM存储。如果查看带有OutlookSpy的OLE附件(单击IMessage按钮,转到GetAttachmentTable,双击附件),您将看到没有PR_ATTACH_DATA_BIN二进制属性,其中存储了常规的​​按值附件;你所拥有的是PR_ATTACH_DATA_OBJ对象(PT_OBJECT)属性。您可以通过右键单击并选择IMAPIProp :: OpenProperty,然后选择IStorage作为界面,在OutlookSpy中打开它。

OLE存储将包含多个包含Outlook使用的标志的流,用于在查看时呈现对象的图元文件,以及用于创建OLE附件的任何OLE服务器使用的实际数据。您可以查看存储CLSID以找出用于创建附件的应用程序。一旦知道这一点,就可以从IStorage中的特定于应用程序的存储流中提取原始文件数据。