MAPIFindNext (VB)
The Visual Basic MAPIFindNext function retrieves the next (or first) message identifier of a specified type of incoming message.
Quick Info
Header file: |
MAPIVB32.BAS |
MAPIFindNext(
Session as Long,
UIParam as Long,
MessageType as String,
SeedMessageID as String,
Flags as Long,
Reserved as Long,
MessageID as String) as Long
Parameters
-
Session
-
[in] Session handle that represents a Simple MAPI session. The value of the Session parameter must represent a valid session; it cannot be zero.
-
UIParam
-
[in] Parent window handle or zero, indicating that if a dialog box is displayed, it is application modal. If no dialog box is displayed during the call, the UIParam parameter is ignored.
-
MessageType
-
[in] The type of message to search. To find an interpersonal message (IPM), use an empty string, "".
-
SeedMessageID
-
[in] The message identifier seed for the request. If the SeedMessageID parameter is an empty string, MAPIFindNext retrieves the first message that matches the type specified in the MessageType parameter.
-
Flags
-
[in] Bitmask of option flags. The following flags can be set:
-
MAPI_GUARANTEE_FIFO
-
The message identifiers returned should be in the order of time received. MAPIFindNext calls can take longer if this flag is set. Some implementations cannot honor this request and return the MAPI_E_NO_SUPPORT value.
-
MAPI_NEW_SESSION
-
An attempt should be made to create a new session rather than acquire the environment's shared session. If the MAPI_NEW_SESSION flag is not set, MAPIFindNext uses an existing shared session.
-
MAPI_UNREAD_ONLY
-
Only unread messages of the specified type should be enumerated. When this flag is not set, MAPIFindNext can return any message of the specified type.
-
Reserved
-
Reserved; must be zero.
-
MessageID
-
[out] The returned message identifier. The MessageID parameter is a variable-length string allocated by the caller. To ensure compatibility, allocate 512 characters. A smaller buffer is sufficient only if the returned message identifier is always 64 characters or less.
Return Values
-
MAPI_E_FAILURE
-
One or more unspecified errors occurred while matching the message type. The call failed before message type matching could take place.
-
MAPI_E_INSUFFICIENT_MEMORY
-
There was insufficient memory to proceed. No message was found.
-
MAPI_E_INVALID_MESSAGE
-
An invalid message identifier was passed in the SeedMessageID parameter. No message was found.
-
MAPI_E_INVALID_SESSION
-
An invalid session handle was passed in the lhSession parameter. No message was found.
-
MAPI_E_NO_MESSAGES
-
A matching message could not be found.
-
SUCCESS_SUCCESS
-
The call succeeded and the message identifier was returned.
Remarks
The MAPIFindNext function allows a client application to enumerate messages of a given type. This function can be called repeatedly to list all messages in the folder. Message identifiers returned from MAPIFindNext can be used in other Simple MAPI calls to retrieve message contents and delete messages. This function is for processing incoming messages, not for managing received messages.
When the value of the SeedMessageID parameter is NULL or empty, MAPIFindNext returns the message identifier for the first message of the type specified by the MessageType parameter. When SeedMessageID contains a valid identifier, MAPIFindNext returns the next matching message of the type specified by MessageType. Repeated calls to MAPIFindNext ultimately result in a return of the MAPI_E_NO_MESSAGES value, which means the enumeration is complete.
Because message identifiers are messaging system-specific and can be invalidated at any time, message identifiers are valid only for the current session. If the message identifier passed in with SeedMessageID is invalid, MAPIFindNext returns the MAPI_E_INVALID_MESSAGE value.
Message type matching is done against message class strings. All message types whose names match, up to the length specified in MessageType, are returned.
The declaration of this function for the 32-bit Visual Basic runtime is:
MAPIFindNext(
ByVal Session&,
ByVal UIParam&,
MsgType$,
SeedMsgID$,
ByVal Flag&,
ByVal Reserved&,
MsgID$) As Long