Win32 API 日本語リファレンス
ホーム › System.Mapi › LPMAPIREADMAIL

LPMAPIREADMAIL

コールバック

シグネチャ

DWORD LPMAPIREADMAIL(
    UINT_PTR lhSession,
    UINT_PTR ulUIParam,
    LPSTR lpszMessageID,
    DWORD flFlags,
    DWORD ulReserved,
    MapiMessage** lppMessage
);

パラメーター

フィールド型説明
lhSessionUINT_PTRSimple MAPI セッションへのハンドル。lhSession パラメーターの値は有効なセッションを表している必要があり、0 にすることはできません。
ulUIParamUINT_PTR親ウィンドウのハンドル、または 0。0 の場合、ダイアログボックスが表示されるときはアプリケーションモーダルになります。ulUIParam パラメーターに親ウィンドウのハンドルを指定する場合、その型は HWND(ULONG_PTR にキャスト)です。呼び出し中にダイアログボックスが表示されない場合、 ulUIParam は無視されます。
lpszMessageIDLPSTR読み取るメッセージのメッセージ識別子文字列へのポインター。この文字列は呼び出し元が割り当てます。
flFlagsDWORD

オプションフラグのビットマスク。次のフラグを設定できます。

値 意味
MAPI_BODY_AS_FILE
MAPIReadMail は、メッセージ本文のテキストを一時ファイルに書き込み、それを添付ファイル一覧の最初の添付ファイルとして追加します。
MAPI_ENVELOPE_ONLY
MAPIReadMail は、メッセージヘッダーのみを読み取ります。ファイル添付は一時ファイルへコピーされず、一時ファイル名もメッセージ本文のテキストも書き込まれません。このフラグを設定すると、パフォーマンスが向上します。
MAPI_PEEK
MAPIReadMail は、メッセージを開封済みとしてマークしません。メッセージを開封済みとしてマークすると、ユーザーインターフェイス上での表示が変わり、開封通知が生成されます。メッセージングシステムがこのフラグをサポートしていない場合、MAPIReadMail は常にメッセージを開封済みとしてマークします。MAPIReadMail でエラーが発生した場合、メッセージは未読のままになります。
MAPI_SUPPRESS_ATTACH
MAPIReadMail は、ファイル添付をコピーせず、メッセージ本文のテキストを MapiMessage 構造体に書き込みます。呼び出し元アプリケーションが MAPI_ENVELOPE_ONLY フラグを設定している場合、MAPIReadMail はこのフラグを無視します。MAPI_SUPPRESS_ATTACH フラグを設定すると、パフォーマンスが向上します。
ulReservedDWORD予約済み。0 を指定する必要があります。
lppMessageMapiMessage**

公式ドキュメント

[この関数の使用は推奨されません。以降のバージョンの Windows では変更されるか、利用できなくなる可能性があります。]

MAPIReadMail 関数は、読み取るためのメッセージを取得します。

戻り値

この関数は、次のいずれかの値を返します。

戻り値 説明
MAPI_E_ATTACHMENT_WRITE_FAILURE
添付ファイルを一時ファイルに書き込めませんでした。ディレクトリのアクセス許可を確認してください。
MAPI_E_DISK_FULL
ディスクの空き容量が不足していたため、添付ファイルを一時ファイルに書き込めませんでした。
MAPI_E_FAILURE
メッセージの読み取り中に、1 つ以上の不特定のエラーが発生しました。
MAPI_E_INSUFFICIENT_MEMORY
メッセージを読み取るためのメモリが不足していました。
MAPI_E_INVALID_MESSAGE
無効なメッセージ識別子が lpszMessageID パラメーターに渡されました。
MAPI_E_INVALID_SESSION
無効なセッションハンドルが lhSession パラメーターに渡されました。メッセージは取得されませんでした。
MAPI_E_TOO_MANY_FILES
メッセージ内のファイル添付が多すぎました。メッセージを読み取れませんでした。
MAPI_E_TOO_MANY_RECIPIENTS
メッセージの受信者が多すぎました。メッセージを読み取れませんでした。
SUCCESS_SUCCESS
呼び出しは成功し、メッセージが読み取られました。

解説(Remarks)

MAPIReadMail 関数は 1 件のメッセージを返し、その内容を MAPISendMail 関数で使用されるものと同じパラメーターおよび構造体に分解します。MAPIReadMail は、件名、メッセージクラス、配信時刻、送信者などのメッセージ要素を含む MapiMessage 構造体で、メモリブロックを埋めます。ファイル添付は一時ファイルに保存され、そのファイル名がメッセージ構造体で呼び出し元に返されます。受信者、添付ファイル、内容は MAPIReadMail が呼び出し元に戻る前にメッセージからコピーされるため、その後にファイルを変更してもメッセージの内容には影響しません。

エンベロープ情報のみを呼び出しから返すよう指定するフラグが用意されています。また、別のフラグ(MapiMessage 構造体内)によって、メッセージを送信済みとして扱うか未送信として扱うかを指定します。

呼び出し元は、MAPIFreeBuffer 関数を呼び出して MapiMessage 構造体を解放し、メッセージに含まれる添付ファイルに関連付けられたファイルを削除する責任があります。

MAPIReadMail を呼び出す前に、MAPIFindNext 関数を使用して、読み取ろうとしているメッセージが目的のメッセージであることを確認してください。メッセージ識別子はシステム固有かつ不透明であり、いつでも無効になる可能性があるため、MAPIReadMail はメッセージ識別子を現在の Simple MAPI セッションでのみ有効なものとして扱います。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)