Sending Messages with MAPI

Client applications call the IMessage::SubmitMessage method to send a message. SubmitMessage calls IMAPIProp::SaveChanges to save the message before transferring control to either the MAPI spooler or directly to a transport provider. The MAPI spooler receives the message if:

A tightly coupled message store must take into account a message's status before it presents it to the MAPI spooler to be downloaded to a transport provider. There are situations where a message may appear to require the MAPI spooler, but the MAPI spooler should really not be involved.

For example, consider the situation where a user submits a message from the Inbox. The client is using a tightly coupled store and transport. If the tightly coupled message store uses the message's location as the sole criteria for deciding about whether or not to allow the MAPI spooler to handle the message, the MAPI spooler will always receive the message. To avoid this kind of problem, a tightly coupled message store must check the message status in addition to message location. Specifically, the transport provider should not request that the MAPI spooler download any message that is actively submitted.

The message transmission process involves the message store provider, one or more transport providers, and MAPI. The following topics provide detailed information about specific roles in the message transmission process:

For information about a message store provider's role in sending messages, see Sending Messages: Message Store Provider Tasks.

For information about the MAPI spooler's role in sending messages, see Sending Messages: MAPI Spooler Tasks.

For information about a transport provider's role in sending messages, see Sending Messages: Transport Provider Tasks.

For information, from the client perspective, about what to do with a message after it has already been sent, see Processing a Sent Message.