Message Submission Model

Message submission is accomplished by a series of calls from the MAPI spooler to the transport provider. The calls are sequenced as follows:

  1. The MAPI spooler calls IXPLogon::SubmitMessage, passing in an IMessage instance, to begin the process.
  2. The transport provider then places a reference value — a transport-defined identifier used in future references to this message — in the location referenced in SubmitMessage.
  3. The transport provider accesses the message data by using the passed IMessage instance. For each recipient in the passed IMessage for which it accepts responsibility, the transport provider sets the PR_RESPONSIBILITY property, and then returns.
  4. The transport provider can use the IMAPISupport::StatusRecips method to indicate if it recognizes any recipients that cannot be delivered to, or to create a standard delivery report. StatusRecips is a convenience for transport providers that have determined that some of the recipients cannot be delivered to or have received delivery information from their underlying messaging system that the user or client application might find useful.
  5. The MAPI spooler's call to IXPLogon::EndMessage is the final responsibility hand-off for the message from the MAPI spooler to the transport provider.
  6. The MAPI spooler can use IXPLogon::TransportNotify to cancel message processing during the SubmitMessage or EndMessage calls.