インライン添付と通常添付の区別
メールメッセージの本文にインライン画像が含まれ、かつ別途通常添付があるというシナリオは一般的です。これを処理するには MailMessage クラスで、インライン添付は次のクラスから抽出できます。 LinkedResourceCollection クラスで、通常添付は次のクラスでアクセス/抽出できます。 AttachmentCollection メッセージのクラスです。ただし、Aspose.Email.Mapi.MapiMessage クラスでメッセージを読み込む場合、インライン画像と通常添付が同じ MapiAttachmentCollection クラスで取得できるため、MapiMessage を使用する際にはインライン添付と通常添付を区別できる方法が必要です。
Aspose.Email を使用してインライン添付と通常添付を区別する
本記事では、MapiMessage を使用してインライン添付と通常添付を区別する方法を説明します。その判定には、MapiMessage の本文タイプを以下のように考慮します:
Plain Text Body: プレーンテキスト本文タイプのメールはチェック不要です。このタイプのメッセージではすべての添付が常に通常添付とみなされます。
Html Body: HTML 本文タイプのメッセージの場合、添付ファイルは PR_ATTACH_FLAGS (0x37140003) プロパティを持ち、インライン添付ではその値が 0x00000004 である必要があります。この条件が満たされた場合、さらに PR_ATTACH_CONTENT_LOCATION と PR_ATTACH_CONTENT_ID タグを参照して添付の性質を判断します。ただし、PR_ATTACH_FLAGS Mapi タグが存在しない場合は、PR_ATTACH_DISPOSITION (0x3716001F または 0x3716001E) プロパティで添付タイプを判定します。
Rtf Body: 本文が RTF の場合、すべての OLE 添付はインライン添付として扱われます。すべての OLE 添付の PR_ATTACH_METHOD の値は 0x00000006 です。
以下のコードサンプルは、プログラム上でインライン添付と通常添付を区別する方法を示しています。関数 IsInlineAttachment は添付ファイルとメッセージの BodyType を入力パラメータとして受け取り、インライン添付であれば true を返します。