MAPI 报告消息
适用于:Outlook 2013 | Outlook 2016
报告邮件向发件人显示有关邮件的状态信息。
有两种常规类型的报告消息:
读取状态报告。
传递状态报告。
读取状态报告
读取状态报告由消息存储提供程序通过调用 IMAPISupport::ReadReceipt 方法启动,并发送到 由 PR_REPORT_ENTRYID (PidTagReportEntryId) 属性中的条目标识符表示的收件人。 读取状态报告不会自动生成;要接收它们的客户端应用程序必须显式请求它们。
读取报告指示已设置邮件的读取标志,这在打开、打印、移动或复制邮件时可能发生。 消息存储提供程序是否生成读取报告以响应移动或复制操作取决于消息的去向。 如果正在将其移动或复制到另一个消息存储区,则很可能始终发送已读报告。 如果在当前消息存储中移动或复制它,则可能发送或可能不会发送已读报告。
未读报告指示未设置邮件的读取标志,并且邮件在放入“已删除邮件”文件夹之前或时间限制过期之前未打开。 客户端可以调用 IMessage::SetReadFlag 或 IMAPIFolder::SetReadFlags 方法来设置或清除邮件的读取标志。
传递状态报告
送达状态反映在送达报告(在邮件到达其预期收件人时发送)和未送达报告(在邮件无法到达收件人时发送)。 传递状态报告将发送给 PR_REPORT_ENTRYID 属性中的条目标识符表示的收件人,如果此属性不存在,则发送给发件人。
传递报告仅按请求发送,不包含原始邮件。 除非发出取消提交报告的请求,否则会自动发送非交付报告。 未送达报告包括原始邮件作为附件,使报表的收件人能够重新发送邮件,以防任何阻止传递不再是问题。 附加消息与最初调用 IMessage::SubmitMessage 方法发送时的原始消息类似。
传输提供程序在调用 IMAPISupport::StatusRecips 方法时生成一个或多个传递状态报告。 传输提供程序为邮件撰写收件人列表。 收件人是否收到报告以及生成的报表类型取决于以下各项:
在将邮件放入邮件存储区之前,传递报告将发送给将 PR_ORIGINATOR_DELIVERY_REPORT_REQUESTED (PidTagOriginatorDeliveryReportRequested) 属性设置为 TRUE 的收件人。
未送达报告将转到未将 PR_ORIGINATOR_NON_DELIVERY_REPORT_REQUESTED (PidTagOriginatorNonDeliveryReportRequested) 属性设置为 FALSE 的收件人。
显示非送达报告所需的几乎所有信息都包含在附加邮件的收件人表中。 一些属性来自报表本身。 对于传递报表,所需信息包含在报表的收件人表和几个报表属性中。
报告是基于已发送消息的类具有不同消息类的消息。 大多数服务提供商使用命名约定,其中消息类由多个部分组成,并用句点分隔。 第一部分是“报表”,最后一个部分是表示报表类型的常量。 中间部分是为已发送消息的 类保留的。 例如,由于传递报告使用常量 DR,因此传递报告的消息类是有关 IPM 的。注释消息将为 Report.IPM.Note.DR。
下表显示了表示报表类型的常量。
报告类型 | 消息类中使用的常量 |
---|---|
阅读 |
IPNRN |
非读 |
IPNNRN |
交付 |
博士 |
非交付 |
Ndr |
交互式客户端可以使用 MAPI 提供的标准窗体或已向报表邮件类的表单管理器注册的自定义窗体来显示报表消息。 接收 IPM 的非交付报告的客户端。例如,注释消息可以显示标准 MAPI 窗体,该窗体显示失败的收件人列表和建议的失败原因。 该窗体还允许用户根据需要重新发送邮件。