IMessage::SetReadFlag

适用于:Outlook 2013 | Outlook 2016

设置或清除PR_MESSAGE_FLAGS (PidTagMessageFlags) 消息属性中的MSGFLAG_READ标志,并管理读取报表的发送。

HRESULT SetReadFlag(
  ULONG ulFlags
);

参数

ulFlags

[in]控制消息读取标志设置的标志的位掩码,即消息PR_MESSAGE_FLAGS属性中的 MSGFLAG_READ 标志和读取报表的处理。 可以设置以下标志:

  • CLEAR_READ_FLAG:应在PR_MESSAGE_FLAGS中清除 MSGFLAG_READ 标志,并且不应发送已读报告。

  • 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:允许 SetReadFlag 在操作完成之前成功返回。

  • 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

备注

IMessage::SetReadFlag 方法在 PR_MESSAGE_FLAGS 属性中设置或清除消息的MSGFLAG_READ标志,并调用 IMAPIProp::SaveChanges 来保存消息。 设置MSGFLAG_READ标志将邮件标记为已阅读,这不一定表示目标收件人实际上已阅读邮件。

SetReadFlags 还管理读取报表的发送。 仅当发件人已请求读取报告时,才会发送读取报告。

无法更改以下项的读取标志:

  • 不存在的消息。

  • 已移动到其他位置的消息。

  • 以读/写权限打开的消息。

  • 当前提交的消息。

给调用方的说明

如果未在 ulFlags 参数中设置任何标志,则适用以下规则:

  • 如果已设置MSGFLAG_READ,则不执行任何操作。

  • 如果未设置MSGFLAG_READ,请设置它,并在设置了 PR_READ_RECEIPT_REQUESTED (PidTagReadReceiptRequested) 属性时发送任何挂起的读取报告。

如果同时设置了SUPPRESS_RECEIPT和GENERATE_RECEIPT_ONLY标志,则应清除PR_READ_RECEIPT_REQUESTED位(如果已设置),并且不应发送读取报告。

设置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。

可以通过在特定条件下禁止生成已读报表来优化报表行为。 但是,如果不支持抑制报表,并且客户端调用设置了SUPPRESS_RECEIPT标志的 SetReadFlag ,则返回MAPI_E_NO_SUPPRESS。

MFCMAPI 引用

有关 MFCMAPI 示例代码,请参阅下表。

文件 函数 Comment
FolderDlg.cpp
CFolderDlg::OnSetReadFlag
MFCMAPI 使用 IMessage::SetReadFlag 方法在所选消息上设置读取标志。

另请参阅