发送信息

适用于:Outlook 2013 | Outlook 2016

准备好发送邮件时,调用其 IMessage::SubmitMessage 方法。 SubmitMessage 将消息置于传出队列中,并在消息的 PR_MESSAGE_FLAGS (PidTagMessageFlags) 属性中设置MSGFLAG_SUBMIT标志。

消息存储提供程序(如果与传输提供程序紧密耦合)会将消息直接提供给将消息传送到消息传递系统的传输。 如果未紧密耦合,消息存储提供程序会通知 MAPI 后台处理程序传出队列已更改,MAPI 后台处理程序会将消息传输到相应的传输提供程序。

如果允许用户取消发送操作,请调用 IMsgStore::AbortSubmit 来实现此功能。 AbortSubmit 从传出队列中删除消息。 在将消息提供给基础消息系统之前,可以允许用户停止发送。

如果 SubmitMessage 返回MAPI_E_CORRUPT_DATA,则假定正在发送的数据现在已丢失。 在尝试第二次发送之前,请通过调用 IMAPIProp::SetPropsIMAPIProp::SaveChanges 来重新编写消息。 如果这些 IMAPIProp 调用失败或 SubmitMessage 再次失败,则向用户显示错误。

成功调用 SubmitMessage 后,释放为收件人列表分配的所有内存,并释放邮件及其附件。 发送消息后,MAPI 不允许对这些对象的指针执行任何进一步操作。 一个例外是调用 IUnknown::Release。 不允许其他调用,因为许多消息存储提供程序使已发送的消息的条目标识符无效。