Whenever possible, your transport provider should operate in the background. The transport provider's actions should be initiated by the MAPI spooler rather than directly by client calls to methods in the transport provider to avoid conflicts with other service providers (especially other transports) that might need to use resources that your transport provider also needs. Following is the typical sequence of actions:
The client calls a method in the transport provider which requires some action.
The transport provider sets some internal status flags which note the action requested by the client.
The transport provider sets one or more special values in the MAPI status table which signal the MAPI spooler that the transport provider needs to perform the requested action.
The MAPI spooler calls one or more methods in the transport provider to initiate the requested actions.