IMAPIFolder::SetReadFlags

適用対象: Outlook 2013 | Outlook 2016

フォルダーの 1 つ以上のメッセージのPR_MESSAGE_FLAGS (PidTagMessageFlags) プロパティのMSGFLAG_READ フラグを設定またはクリアし、読み取りレポートの送信を管理します。

HRESULT SetReadFlags(
  LPENTRYLIST lpMsgList,
  ULONG_PTR ulUIParam,
  LPMAPIPROGRESS lpProgress,
  ULONG ulFlags
);

パラメーター

lpMsgList

[in]設定またはクリアする読み取りフラグを持つメッセージを識別する ENTRYLIST 構造体の配列へのポインター。 lpMsgList が NULL に設定されている場合、フォルダーのすべてのメッセージの読み取りフラグが設定またはクリアされます。

ulUIParam

[in]進行状況インジケーターの親ウィンドウへのハンドル。 ulUIParam パラメーターは、ulFlags パラメーターに MESSAGE_DIALOG フラグが設定されていない限り無視されます。

lpProgress

[in]進行状況インジケーターを表示する進行状況オブジェクトへのポインター。 LPProgress で NULL が渡された場合、メッセージ ストア プロバイダーは MAPI の実装を使用して進行状況インジケーターを表示します。 lpProgress パラメーターは、ulFlags でMESSAGE_DIALOG フラグが設定されていない限り無視されます。

ulFlags

[in]メッセージの読み取りフラグの設定と読み取りレポートの処理を制御するフラグのビットマスク。 次のフラグを設定できます。

  • CLEAR_READ_FLAG: MSGFLAG_READ フラグは PR_MESSAGE_FLAGS でクリアし、読み取りレポートを送信しないでください。

  • CLEAR_NRN_PENDING: PR_MESSAGE_FLAGSでMSGFLAG_NRN_PENDING フラグをクリアし、未読のレポートを送信しないでください。

  • CLEAR_RN_PENDING: PR_MESSAGE_FLAGSでMSGFLAG_RN_PENDING フラグをクリアし、読み取りレポートを送信しないでください。

  • GENERATE_RECEIPT_ONLY: 保留中の場合は読み取りレポートを送信する必要がありますが、MSGFLAG_READ フラグの状態は変更しないでください。

  • MAPI_DEFERRED_ERRORS: 操作が完了する前に 、SetReadFlags が正常に返されるようにします。

  • MESSAGE_DIALOG: 操作の進行中に進行状況インジケーターが表示されます。

  • SUPPRESS_RECEIPT: 読み取りレポートが要求され、この呼び出しによってメッセージの状態が未読から読み取りに変更された場合、保留中の読み取りレポートを取り消す必要があります。 この呼び出しによってメッセージの状態が変更されない場合、メッセージ ストア プロバイダーはこのフラグを無視できます。

戻り値

S_OK

指定したメッセージまたはメッセージの読み取りフラグが正常に設定またはクリアされました。

MAPI_E_NO_SUPPRESS

メッセージ ストア プロバイダーは、読み取りレポートの抑制をサポートしていません。

MAPI_E_INVALID_PARAMETER

ulFlags パラメーターには、次のいずれかの互換性のないフラグの組み合わせが設定されています。

  • SUPPRESS_RECEIPT |CLEAR_READ_FLAG

  • SUPPRESS_RECEIPT |CLEAR_READ_FLAG |GENERATE_RECEIPT_ONLY

  • CLEAR_READ_FLAG |GENERATE_RECEIPT_ONLY

MAPI_W_PARTIAL_COMPLETION

呼び出しは成功しましたが、すべてのメッセージが正常に処理されたわけではありません。 この警告が返されたら、呼び出しは成功として処理する必要があります。 この警告をテストするには、 HR_FAILED マクロを使用します。 詳細については、「 エラー処理にマクロを使用する」を参照してください。

注釈

IMAPIFolder::SetReadFlags メソッドは、フォルダーの 1 つ以上のメッセージの PR_MESSAGE_FLAGS プロパティのMSGFLAG_READ フラグを設定またはクリアします。 MSGFLAG_READ フラグを設定すると、メッセージが読み取りとしてマークされます。これは、必ずしも目的の受信者がメッセージを実際に読み取っていることを示すものではありません。

SetReadFlags は、 読み取りレポートの送信も管理します。

次の場合、読み取りフラグを変更できません。

  • 存在しないメッセージ。

  • 他の場所に移動されたメッセージ。

  • 読み取り/書き込みアクセス許可で開いているメッセージ。

  • 現在送信されているメッセージ。

実装に関するメモ

読み取りレポートの送信と読み取りレポートを抑制する要求をサポートしないことを決定できます。 読み取りレポートを抑制しないようにするには、ulFlags パラメーターに SUPPRESS_RECEIPT を設定して SetReadFlags が呼び出されたときにMAPI_E_NO_SUPPRESSを返します。

lpMsgList パラメーターが複数のメッセージを指している場合は、各メッセージに対して可能な限り完全に操作を実行します。 メモリ不足、ディスク領域の不足、メッセージ ストアの破損など、制御できないエラーが発生しない限り、操作を途中で停止しないでください。

ulFlags パラメーターにフラグが設定されていない場合は、次の規則が適用されます。

  • MSGFLAG_READが既に設定されている場合は、何も行わないでください。

  • MSGFLAG_READが設定されていない場合は、すぐに設定し、 PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested) プロパティが設定されている場合は、保留中の読み取りレポートを送信します。

SUPPRESS_RECEIPT フラグを設定すると、次の規則が適用されます。

  • MSGFLAG_READが既に設定されている場合は、何も行わないでください。

  • MSGFLAG_READが設定されていない場合は、設定し、保留中の読み取りレポートを取り消します。

CLEAR_READ_FLAG フラグが設定されている場合は、各メッセージの PR_MESSAGE_FLAGS プロパティで MSGFLAG_READ フラグをクリアし、読み取りレポートを送信しません。

GENERATE_RECEIPT_ONLY フラグが設定されたら、保留中の読み取りレポートを送信します。 MSGFLAG_READを設定またはクリアしないでください。

SUPPRESS_RECEIPTフラグとGENERATE_RECEIPT_ONLYフラグの両方が設定されている場合は、 PR_READ_RECEIPT_REQUESTED を FALSE に設定します(設定されている場合は FALSE に設定し、読み取りレポートを送信しません)。

呼び出し側への注意

これらの戻り値は、次の条件で想定します。

Condition 戻り値
SetReadFlags はすべてのメッセージを正常に処理しました。 S_OK
SetReadFlags は、すべてのメッセージを正常に処理できませんでした。 MAPI_W_PARTIAL_COMPLETIONまたはMAPI_E_NOT_FOUND
SetReadFlags を 完了できませんでした。 MAPI_E_NOT_FOUNDを除くすべてのエラー値

SetReadFlags が完了できない場合は、作業が完了していないと想定しないでください。 SetReadFlags は、エラーが発生する前に、1 つ以上のメッセージのMSGFLAG_READ フラグを設定またはクリアできた可能性があります。

MFCMAPI リファレンス

MFCMAPI のサンプル コードについては、次の表を参照してください。

ファイル 関数 コメント
FolderDlg.cpp
CFolderDlg::OnSetReadFlag
MFCMAPI では、 IMAPIFolder::SetReadFlags メソッドを使用して、指定したメッセージの読み取り状態を手動で設定します。

関連項目