0

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)
4

1 に答える 1

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 を調べて、添付ファイルの作成に使用されたアプリケーションを特定できます。それがわかれば、その ISt​​orage 内のアプリケーション固有のストレージ ストリームから未加工のファイル データを抽出できます。

于 2013-10-11T16:23:19.220 に答える