メッセージの添付ファイルの作成
適用対象: Outlook 2013 | Outlook 2016
メッセージ添付ファイルは、ファイル、別のメッセージ、OLE オブジェクトなど、メッセージと共に送信または保存できる追加データです。 各添付ファイルには、プロパティを識別し、その種類とレンダリング方法を記述するプロパティのコレクションがあります。 受信者と同様に、メッセージの添付ファイルには、所属するメッセージを介してのみアクセスできます。 したがって、添付ファイルを使用できるようにするには、そのメッセージを開く必要があります。
メッセージ添付ファイルを作成する
メッセージの IMessage::CreateAttach メソッドを 呼び出し、インターフェイス識別子として NULL を渡します。 CreateAttach は、メッセージ内の新しい添付ファイルを一意に識別する数値を返します。 添付ファイル番号は 、PR_ATTACH_NUM (PidTagAttachNumber) プロパティに格納され、添付ファイルを含むメッセージが開いている限り有効です。
IMAPIProp::SetProps を呼び出してPR_ATTACH_METHOD (PidTagAttachMethod) を設定して、添付ファイルにアクセスする方法を示します。 PR_ATTACH_METHOD が必要です。 次のように設定します。
添付ファイルがバイナリ データの場合にATTACH_BY_VALUEします。
添付ファイルがファイルの場合は、ATTACH_BY_REFERENCE、ATTACH_BY_REF_RESOLVE、またはATTACH_BY_REF_ONLY。
添付ファイルがメッセージの場合は、ATTACH_EMBEDDED_MSGします。
添付ファイルが OLE オブジェクトの場合にATTACH_OLEします。
適切な添付ファイル データ プロパティを設定します。
バイナリ データと OLE 1 オブジェクトのPR_ATTACH_DATA_BIN (PidTagAttachDataBinary)。
ファイルのPR_ATTACH_PATHNAME (PidTagAttachPathname)。
メッセージと OLE 2 オブジェクトのPR_ATTACH_DATA_OBJ (PidTagAttachDataObject)。
PR_ATTACH_RENDERING (PidTagAttachRendering) を設定して、ファイルまたはバイナリ添付ファイルの添付ファイルのグラフィック表現を保持します。 レンダリング情報を内部に格納する OLE オブジェクトや添付メッセージには設定しないでください。
PR_RENDERING_POSITION (PidTagRenderingPosition) を設定して、添付ファイルを表示する場所を示します。 PR_RENDERING_POSITION は、 PR_BODY プロパティを設定したクライアントにのみ適用されます。 PR_RTF_COMPRESSEDのみをサポート する場合は、圧縮ストリームに次のプレースホルダー情報を配置します。
\objattph
PR_RENDERING_POSITIONを設定するには、文字の序数オフセットを表す数値を割り当てます。最初の文字PR_BODY 0 を指定します。添付ファイルがレンダリングされるメッセージ内の場所を知る必要がある場合は 0、添付ファイルをPR_BODY内にレンダリングしない場合は0xFFFFFFFFします。
PR_ATTACH_FILENAME (PidTagAttachFilename) を設定して、添付ファイルのファイルの短い名前を示し、長いファイル名形式を処理するプラットフォームでサポートされているファイルの名前を示すPR_ATTACH_LONG_FILENAME (PidTagAttachLongFilename) を設定します。 どちらのプロパティも省略可能です。 ただし、 PR_ATTACH_LONG_FILENAMEを設定した場合は、PR_ATTACH_FILENAMEも設定 します。
PR_DISPLAY_NAME (PidTagDisplayName) を設定して、ダイアログ ボックスに表示できる添付ファイルの名前を示します。 PR_DISPLAY_NAMEは省略可能です。
PR_ATTACH_DATA_BINを設定する
IMAPIProp::OpenProperty を呼び出して、IStream インターフェイスで プロパティを開きます。
ファイルにデータが含まれており、開いている場合、またはバッファー サイズを明示的に制御する必要がある場合は、 IStream::Write をループで呼び出してストリームにデータを配置します。
もう 1 つのオプションは、 OpenStreamOnFile を呼び出してデータ ファイルにアクセスするストリームを作成し、このストリームの IStream::CopyTo メソッドを 呼び出して 、OpenProperty から返されたストリームにデータをコピーすることです。
新しいストリームの IStream::Commit メソッドを 呼び出します。
PR_ATTACH_DATA_OBJを設定する
IMAPIProp::OpenProperty を呼び出して、IStreamDocfile インターフェイスで プロパティを開き、構造化ストレージで動作するストリームを作成します。 IStreamDocfile はメッセージ ストア プロバイダーによって実装され、クライアントに構造化ストレージを格納および取得するためのより高いパフォーマンスの方法が提供されます。 IStreamDocfile インターフェイスは IStream と同じですが、ストリームの内容は構造化ストレージとして書式設定されていることが保証されます。 この呼び出しが成功した場合は、PR_ATTACH_DATA_BINの設定と同じ手順でストリーム を作成します。
OpenProperty が失敗した場合:
もう一度 OpenProperty を呼び出して 、IStorage を要求します。
StgOpenStorage を呼び出して OLE オブジェクトを開き、ストレージ オブジェクトを返します。
返されたストレージ オブジェクトの IStorage::CopyTo メソッドを呼び出して、 OpenProperty から返されたストレージ オブジェクトにコピーします。
新しいストレージ オブジェクトの IStorage::Commit メソッドを呼び出します。
PR_ATTACH_PATHNAMEを設定する
SPropValue 構造体を割り当て、ulPropTag メンバーを PR_ATTACH_PATHNAME に設定し、Value.LPSZ メンバーをファイル名を表す文字列に設定します。
添付ファイルの IMAPIProp::SetProps メソッドを 呼び出します。
注:
プラットフォームで長いファイル名がサポートされている場合は、 PR_ATTACH_PATHNAMEとPR_ATTACH_LONG_PATHNAME の両方を設定 します。 短いファイル名を取得するには、オペレーティング システム呼び出しを行う必要がある場合があります。