PRB: Calling FlushQueues() Does Not Deliver Messages (188297)



The information in this article applies to:

  • Microsoft Extended Messaging Application Programming Interface (MAPI)
  • Microsoft Exchange Server 4.0
  • Microsoft Exchange Server 5.0
  • Microsoft Exchange Server 5.5

This article was previously published under Q188297

SYMPTOMS

Frequently, developers want to have their application work with an offline store and at a later time send and receive mail by calling IMAPIStatus::FlushQueues(). Sometimes, FlushQueues() will return success but no messages are sent or received. The outgoing mail is still located in the Outbox.

CAUSE

This problem is the result of a limitation of the Extended Messaging Application Programming Interface (MAPI) spooler. The spooler only checks for outgoing mail in currently loaded (open) message stores. So, if you do not currently have a reference to the store via IMAPISession::OpenMsgStore(), for example, the messages in that store will not be flushed.

RESOLUTION

In order to ensure that messages in a particular message store are flushed, call IMAPISession::OpenMsgStore() on that store, call IMAPIStatus::FlushQueues(), and then release your store pointer.

STATUS

This behavior is by design.

Modification Type:MinorLast Reviewed:8/18/2005
Keywords:kbAPI kbMsg kbprb KB188297