email/pop3andsmtpmtm/clientmtms/inc/IMAPCMDS.H
changeset 0 72b543305e3a
child 76 60a8a215b0ec
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/pop3andsmtpmtm/clientmtms/inc/IMAPCMDS.H	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,1082 @@
+// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#if !defined (__IMAPCMDS_H__)
+#define __IMAPCMDS_H__
+
+#if !defined (__MSVSTD_HRH__)
+#include <msvstd.hrh>
+#endif
+
+class TImap4RenameFolder
+/** Buffer for an IMAP folder name. 
+
+@see KIMAP4MTMRenameFolder
+
+@publishedAll
+@released
+*/
+	{
+public:
+	/** IMAP folder name. */
+	TBuf<128> iNewName;
+	};
+
+/** IMAP4-specific commands that can be issued through either 
+CImap4ClientMtm::InvokeAsyncFunctionL() or, in a few cases, 
+CImap4ClientMtm::InvokeSyncFunctionL().
+ 
+These functions take an input message selection parameter 
+(@c const CMsvEntrySelection& @c aSelection) and an input/output buffer parameter 
+(TDes8& @c aParameter). The use of these parameters is command specific, and is 
+described for each command below.
+
+The commands fall into a number of categories: 
+
+- Connect and logon to remote server:
+  - #KIMAP4MTMConnect
+  - #KIMAP4MTMDisconnect
+- Synchronise headers:
+  - #KIMAP4MTMCancelBackgroundSynchronise
+  - #KIMAP4MTMConnectAndSyncCompleteAfterConnect
+  - #KIMAP4MTMConnectAndSyncCompleteAfterDisconnect
+  - #KIMAP4MTMConnectAndSyncCompleteAfterFullSync
+  - #KIMAP4MTMConnectAndSynchronise
+  - #KIMAP4MTMFolderFullSync
+  - #KIMAP4MTMFullSync
+  - #KIMAP4MTMInboxNewSync
+  - #KIMAP4MTMSynchronise
+  - #KIMAP4MTMWaitForBackground
+- Subscribe to mailboxes:
+  - #KIMAP4MTMLocalSubscribe
+  - #KIMAP4MTMLocalUnsubscribe
+- Populate messages:
+  - #KIMAP4MTMPopulate
+  - #KIMAP4MTMPopulateAllMailWhenAlreadyConnected
+  - #KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected
+  - #KIMAP4MTMPopulateNewMailWhenAlreadyConnected
+  - #KIMAP4MTMConnectAndPopulateAllMailAndDisconnect
+  - #KIMAP4MTMConnectAndPopulateAllMailAndStayOnline
+  - #KIMAP4MTMConnectAndPopulateMailSelectionAndDisconnect
+  - #KIMAP4MTMConnectAndPopulateMailSelectionAndStayOnline
+  - #KIMAP4MTMConnectAndPopulateNewMailAndDisconnect
+  - #KIMAP4MTMConnectAndPopulateNewMailAndStayOnline
+- Copy messages:
+  - #KIMAP4MTMCopyAllMailWhenAlreadyConnected
+  - #KIMAP4MTMCopyMailSelectionWhenAlreadyConnected
+  - #KIMAP4MTMCopyNewMailWhenAlreadyConnected
+  - #KIMAP4MTMConnectAndCopyAllMailAndDisconnect
+  - #KIMAP4MTMConnectAndCopyAllMailAndStayOnline
+  - #KIMAP4MTMConnectAndCopyMailSelectionAndDisconnect
+  - #KIMAP4MTMConnectAndCopyMailSelectionAndStayOnline
+  - #KIMAP4MTMConnectAndCopyNewMailAndDisconnect
+  - #KIMAP4MTMConnectAndCopyNewMailAndStayOnline
+- Move messages:
+  - #KIMAP4MTMMoveAllMailWhenAlreadyConnected
+  - #KIMAP4MTMMoveMailSelectionWhenAlreadyConnected
+  - #KIMAP4MTMMoveNewMailWhenAlreadyConnected
+  - #KIMAP4MTMConnectAndMoveAllMailAndDisconnect
+  - #KIMAP4MTMConnectAndMoveAllMailAndStayOnline
+  - #KIMAP4MTMConnectAndMoveMailSelectionAndDisconnect
+  - #KIMAP4MTMConnectAndMoveMailSelectionAndStayOnline
+  - #KIMAP4MTMConnectAndMoveNewMailAndDisconnect
+  - #KIMAP4MTMConnectAndMoveNewMailAndStayOnline
+- Create messages:
+  - #KIMAP4MTMCreateForwardAsAttachmentEmailMessage
+  - #KIMAP4MTMCreateForwardEmailMessage
+  - #KIMAP4MTMCreateNewEmailMessage
+  - #KIMAP4MTMCreateReceiptEmailMessage
+  - #KIMAP4MTMCreateReplyEmailMessage
+  .
+  Note that CImEmailOperation is usually a more convenient way
+  to create messages.
+- Query state:
+  - #KIMAP4MTMBusy
+  - #KIMAP4MTMIsConnected
+- Offline operations:
+  - #KIMAP4MTMCancelOffLineOperations
+  - #KIMAP4MTMUndeleteAll
+- Miscellaneous:
+  - #KIMAP4MTMEndBatch
+  - #KIMAP4MTMRenameFolder
+  - #KIMAP4MTMSelect
+  - #KIMAP4MTMStartBatch
+
+Note that when @c iServiceSelection is referred to in code examples for some
+commands, this is assumed to be a CMsvEntrySelection that  
+contain the entry ID of an IMAP service. 
+
+@see CImap4ClientMtm::InvokeAsyncFunctionL() 
+@see CImap4ClientMtm::InvokeSyncFunctionL()
+
+@publishedAll
+@released
+*/	
+enum TImap4Cmds {
+	/** Tests if a specified service is connected.
+	
+	This command is synchronous, and used from @c InvokeSyncFunctionL().
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	to test.
+	 
+	@c aParameter: a packaged TInt. On return, this is set to  
+	KErrNone if the service is connected or KErrDisconnected if not. 
+	
+	Example:
+	@code
+	TPckgBuf<TInt> parameter;
+	iClientMtm->InvokeSyncFunctionL(KIMAP4MTMIsConnected, *iServiceSelection, parameter);
+	if (parameter()==KErrNone)
+		{
+		_LIT(KConnStatus, "\n\n Connected to the service");
+		iConsole->Printf(KConnStatus);
+		}	
+	@endcode
+	*/
+	KIMAP4MTMIsConnected = KMtmFirstFreeMtmFunctionId,
+	
+	/** Connects to the specified IMAP service.
+
+	This makes a network connection and logs on the IMAP server specified 
+	in the settings for the service. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	to connect to.
+	 
+	@c aParameter: packages a pointer to an implementation of the connection observer 
+	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
+	to notify the client of the stages of connection.
+	
+	Completion: KErrBusy if the device is already connected to the specified server.
+
+	Example:
+	@code
+	TBuf8<1> parameter;
+	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMConnect, *iServiceSelection, parameter, iStatus);    
+	@endcode	
+	*/
+	KIMAP4MTMConnect,
+	
+	/** Connects to the specified IMAP service, and starts a background synchronisation.
+
+	The call completes when the connection occurs and the synchronisation starts. See
+	CImap4ClientMtm for a description of a background synchronisation.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	to connect to.
+	 
+	@c aParameter: packages a pointer to an implementation of the connection observer 
+	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
+	to notify the client of the stages of connection and synchronisation.
+	
+	Completion: KErrBusy if the device is already connected to the specified server. 
+	
+	Example:
+	@code
+	TPckg<MMsvImapConnectionObserver*> parameter(this);	
+  iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMConnectAndSynchronise, *iServiceSelection, parameter, iStatus);
+	@endcode
+	*/
+	KIMAP4MTMConnectAndSynchronise,
+	
+	/** Cancels a background synchronisation in progress.
+		
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	being synchronised.
+	 
+	@c aParameter: unused.
+	
+	Completion: KErrCancel if a synchronisation was cancelled; KErrNone if no
+	synchronisation was taking place.   
+
+	Example:
+	@code
+	TBuf8<1> parameter;
+  iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMCancelBackgroundSynchronise, *iServiceSelection, parameter, iStatus);	
+	@endcode			
+	*/
+	KIMAP4MTMCancelBackgroundSynchronise,
+	
+	/** Ensures that the IMAP server will remain loaded ready for more commands. 
+	
+	If this is not set, then the Message Server can unload the IMAP server MTM
+	after a service is disconnected. It is more efficient if it stays loaded
+	if further use of the MTM is expected.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	 
+	@c aParameter: unused.
+	
+	Completion: KErrNone.
+	*/
+	KIMAP4MTMStartBatch,
+	
+	/** Ends the effect of KIMAP4MTMStartBatch. 
+
+	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
+	 
+	@c aParameter: unused.
+	
+	Completion: KErrNone.	
+	*/
+	KIMAP4MTMEndBatch,
+	
+	/** Tests if the server is busy.
+
+	It can be used from either CImap4ClientMtm::InvokeAsyncFunctionL() or 
+	CImap4ClientMtm::InvokeSyncFunctionL().
+	
+	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
+	 
+	@c aParameter: if the command is called from InvokeSyncFunctionL(), then on return a packaged
+	TInt holding the result.
+		
+	Completion: This completes with either KErrNone (neither session is busy) or KErrServerBusy 
+	otherwise. 
+	*/
+	KIMAP4MTMBusy,
+	
+	/** Issues an IMAP SELECT command on the specified mailbox. 
+
+	This is used to select an mailbox for the KIMAP4MTMSynchronise command.	
+	
+	Pre-condition: a connected service.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
+	to select.
+	 
+	@c aParameter: Unused.
+		
+	Completion: KErrDisconnected if not connected. 
+	*/
+	KIMAP4MTMSelect,
+	
+	/** Synchronises the current folder that is selected on the remote server.
+
+	Note that after a connection is made, the Inbox folder is selected by default.
+	
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service. 	
+	 
+	@c aParameter: unused.
+	
+	Completion: KErrDisconnected if not connected. 	
+	*/
+	KIMAP4MTMSynchronise,
+	
+	/** Synchronises the connected service's folder tree with the folders on the remote IMAP server.
+
+	This creates and deletes folder entries in the message store under the remote service as needed,
+	to match the mailboxes that exist on the remote server. Note that this step is done as part of 
+	the normal service synchronisation operation.
+		
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
+	 
+	@c aParameter: unused.
+
+	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
+	background synchronisation is already in progress. 	
+	*/
+	KIMAP4MTMSyncTree,
+	
+	/** Not supported. */
+	KIMAP4MTMReserved10,						// SyncSubscription
+	
+	/** Synchronises the specified service. 
+
+	This is a foreground synchronisation, and completes when the synchronisation is done.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	to synchronise.
+	
+	@c aParameter: unused.
+	
+	Pre-condition: a connected service.
+	
+	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
+	background synchronisation is already in progress.
+	*/
+	KIMAP4MTMFullSync,
+	
+	/** Cancels any operations in progress and sends logout messages to server.
+
+	If CImImap4Settings::SetDeleteEmailsWhenDisconnecting() is set,
+	any messages marked as deleted while offline are deleted before logout.
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
+	 
+	@c aParameter: unused.
+
+	Completion: KErrDisconnected if not connected.
+	*/
+	KIMAP4MTMDisconnect,
+
+	/** Sets the local subscription flag on a specified folder. 
+
+	This sets the local subscription flag on the folder's index entry 
+	(see TMsvEmailEntry::SetLocalSubscription()), and saves the changed entry 
+	to the index.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
+	to subscribe to.
+	 
+	@c aParameter: unused.
+	
+	Completion: KErrNotSupported if the entry is not a folder; KErrNone on success.   
+	*/
+	KIMAP4MTMLocalSubscribe,
+
+	/** Clears the local subscription flag on the specified folder.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
+	to unsubscribe from.
+	 
+	@c aParameter: unused.
+
+	Completion: KErrNotSupported if the entry is not a folder; KErrNone on success.   
+	*/
+	KIMAP4MTMLocalUnsubscribe,
+    
+	/** Not supported. */
+	KIMAP4MTMReserved15,						// MakeRemoteMailboxesInvisible
+	/** Not supported. */
+	KIMAP4MTMReserved16,						// MakeRemoteMailboxesVisible
+	
+	/** Synchronises any messages received by the remote server Inbox since the
+	last synchronisation operation.
+
+	Messages that have been deleted from the remote Inbox are not deleted from
+	the mirror.
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
+	 
+	@c aParameter: unused.
+
+	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
+	background synchronisation is already in progress.
+	*/
+	KIMAP4MTMInboxNewSync,
+	
+	/** Selects and synchronises the specified folder. 
+	
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder to synchronise.
+	 
+	@c aParameter: unused.
+
+	Completion: KErrDisconnected if not connected.
+	*/
+	KIMAP4MTMFolderFullSync,
+	
+	/** Completes only when a background synchronisation has finished. 
+		
+	This turns a background synchronisation into a foreground synchronisation.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	being synchronised.
+	 
+	@c aParameter: unused.
+	
+	Completion: KErrNone when no background synchronisation is in progress.   
+	
+	Example:
+	@code
+	TBuf8<1> parameter;
+	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMWaitForBackground, *iServiceSelection, parameter, iStatus);	
+	@endcode
+	*/
+	KIMAP4MTMWaitForBackground,
+	
+	/** Renames a specified folder.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder to rename. 
+	 
+	@c aParameter: the new name for the folder. This should be a packaged TImap4RenameFolder object.
+
+	Pre-conditions: a connected service.
+			
+	Completion: KErrDisconnected if there is no connected service. 
+	
+	Example:
+	@code
+	// rename folder, assumed to be identified in *selection[0], to "newname".
+	_LIT(KNewName, "newname");
+	TImap4RenameFolder newName;
+	newName.iNewName = KNewName;	
+	TPckg<TImap4RenameFolder> name(newName);
+	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMRenameFolder, *selection, name, iStatus);	
+	@endcode
+	 */
+	KIMAP4MTMRenameFolder,
+		
+	/** Undoes any offline delete operations pending on the specified entries.
+		
+	@c aSelection: Entries on which to cancel offline delete operations. 
+	 
+	@c aParameter: Unused.
+
+	Completion: KErrNone.
+	*/
+	KIMAP4MTMUndeleteAll,
+	
+	/** Cancels any offline operations pending on the specified entries.
+	
+	If any item is a folder, then it cancels all operations queued on any item 
+	in that folder. If an IMAP4 service ID is given, then it cancels any Copy() 
+	or MoveFromLocal() operations that are queued. A message can not have its 
+	pending operations cancelled individually. 
+	
+	@c aSelection: Entries on which to cancel offline operations. 
+	 
+	@c aParameter: Unused.
+
+	Completion: KErrNone.	
+	*/
+	KIMAP4MTMCancelOffLineOperations,
+
+	/** Fetches the specified messages from the remote server to the mirror. 
+		
+	@c aSelection: Messages to fetch.
+
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	*/
+	KIMAP4MTMPopulate,
+
+	/** Not supported. */
+	KIMAP4MTMSyncSubscription,
+
+	/** Connect and synchronise the specified service, and complete after connection. 
+	
+	The operation completes when the connection part completes. The synchronisation
+	is done in the background. 
+	
+	The command	has the same functionality as KIMAP4MTMConnectAndSynchronise.  
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	to connect to.
+	 
+	@c aParameter: packages a pointer to an implementation of the connection observer 
+	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
+	to notify the client of the stages of connection and synchronisation.
+	
+	Completion: KErrBusy if a connected session already exists. 	
+	*/
+	KIMAP4MTMConnectAndSyncCompleteAfterConnect,
+	
+	/** Connect and synchronise the specified service, and complete after synchronisation. 
+	
+	This is similar to KIMAP4MTMConnectAndSynchronise, except that the operation
+	does not complete until synchronisation is complete.  
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
+	to connect to.
+	 
+	@c aParameter: packages a pointer to an implementation of the connection observer 
+	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
+	to notify the client of the stages of connection and synchronisation.
+	
+	Completion: KErrBusy if a connected session already exists. 	
+	*/
+	KIMAP4MTMConnectAndSyncCompleteAfterFullSync,
+	
+	/** Connect and synchronise the specified service, and complete after disconnection.
+	
+	Unlike the other synchronisation commands, this command does not complete
+	after either connection or synchronisation. Instead, after the initial synchronisation
+	is complete, it periodically resynchronises the Inbox until the service is disconnected.
+	CImImap4Settings::SyncRate() sets the refresh period. 
+	
+	Disconnection can occur because the network connection is closed, either through 
+	user action, or because a networking timeout occurs on the socket. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service
+	to connect to.
+
+	@c aParameter: packages a pointer to an implementation of the connection
+	observer interface, MMsvImapConnectionObserver. Callbacks are made to this
+	interface to notify the client of the stages of connection and
+	synchronisation.
+
+	Completion: KErrBusy if a connected session already exists.
+	*/
+	KIMAP4MTMConnectAndSyncCompleteAfterDisconnect,
+	
+	/** Not supported. */
+	KIMAP4MTMCancelSendOnNextConnection,
+	
+	/** Copy any new messages from a specified folder to another folder,
+	assuming a new connection does not need to be made.
+
+	This is used after message headers have been synchronised. Any messages marked
+	as new are populated in the mirror, and then copied to the specified destination folder.
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder from which
+	to copy the entries.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no new entries, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMCopyNewMailWhenAlreadyConnected,
+	
+	/** Connect to a specified service, copy any new messages from 
+	a specified folder into another folder, and stay connected. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to copy.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no new entries, then KErrNone, and progress
+	information is a null descriptor.			
+	*/
+	KIMAP4MTMConnectAndCopyNewMailAndStayOnline,
+	
+	/** Connect to a specified service, copy any new messages from 
+	a specified folder into another folder, and disconnect afterwards. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to copy.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no new entries, then KErrNone, and progress
+	information is a null descriptor.			
+	*/
+	KIMAP4MTMConnectAndCopyNewMailAndDisconnect,
+		
+	/** Move any new messages from a specified folder to another folder,
+	assuming a new connection does not need to be made.
+
+	This is used after message headers have been synchronised. Any messages marked
+	as new are populated in the mirror, and then moved to the specified destination folder.
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder from which
+	to move the entries.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no new entries, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMMoveNewMailWhenAlreadyConnected,
+
+	/** Connect to a specified service, move any new messages from 
+	a specified folder into another folder, and stay connected. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to move.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no new entries, then KErrNone, and progress
+	information is a null descriptor.			
+	*/
+	KIMAP4MTMConnectAndMoveNewMailAndStayOnline,
+	
+	/** Connect to a specified service, move any new messages from 
+	a specified folder into another folder, and disconnect afterwards. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to move.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no new entries, then KErrNone, and progress
+	information is a null descriptor.			
+	*/
+	KIMAP4MTMConnectAndMoveNewMailAndDisconnect,
+
+	/** Copy the specified messages to another folder, assuming a new connection
+	does not need to be made.
+
+	The specified messages are populated in the mirror, and then copied to
+	the specified destination folder.
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to copy.	
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to copy, then KErrNone, and progress
+	information is a null descriptor.
+	*/
+	KIMAP4MTMCopyMailSelectionWhenAlreadyConnected,
+
+	/** Connect to a specified service, copy the specified messages to another 
+	folder, and stay connected.
+
+	The specified messages are populated in the mirror, and then copied to
+	the specified destination folder.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to copy.	
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to copy, then KErrNone, and progress
+	information is a null descriptor.
+	*/
+	KIMAP4MTMConnectAndCopyMailSelectionAndStayOnline,
+
+	/** Connect to a specified service, copy the specified messages to another 
+	folder, and disconnect afterwards.
+
+	The specified messages are populated in the mirror, and then copied to
+	the specified destination folder.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to copy.	
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to copy, then KErrNone, and progress
+	information is a null descriptor.
+	*/
+	KIMAP4MTMConnectAndCopyMailSelectionAndDisconnect,
+
+	/** Move the specified messages to another folder, assuming a new connection 
+	does not need to be made. 
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to move.	
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to move, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMMoveMailSelectionWhenAlreadyConnected,
+	
+	/** Connect to a specified service, move the specified messages to another 
+	folder, and stay connected.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to move.	
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to move, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMConnectAndMoveMailSelectionAndStayOnline,
+
+	/** Connect to a specified service, move the specified messages to another 
+	folder, and disconnect afterwards.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to move.	
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to move, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMConnectAndMoveMailSelectionAndDisconnect,
+
+	/** Copy all messages from the current service, assuming a new connection does 
+	not need to be made. 
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder from which
+	to copy the entries.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to copy, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMCopyAllMailWhenAlreadyConnected,
+
+	/** Connect to a specified service, copy all messages from the current service, 
+	and stay connected. 
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder from which
+	to copy the entries.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to copy, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMConnectAndCopyAllMailAndStayOnline,
+
+	/** Connect to a specified service, copy all messages from the current service, 
+	and disconnect afterwards. 
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder from which
+	to copy the entries.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to copy, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMConnectAndCopyAllMailAndDisconnect,
+
+	/** Move all messages from the specified folder, assuming a new connection does 
+	not need to be made. 
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder from which
+	to move the entries.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no entries to move, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMMoveAllMailWhenAlreadyConnected,
+
+	/** Connect to a specified service, move all messages from 
+	a specified folder into another folder, and stay connected. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to move.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no new entries, then KErrNone, and progress
+	information is a null descriptor.			
+	*/	
+	KIMAP4MTMConnectAndMoveAllMailAndStayOnline,
+	
+	/** Connect to a specified service, move all messages from 
+	a specified folder into another folder, and disconnect afterwards. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to move.
+
+	@c aParameter: packaged TImImap4GetMailInfo object.
+	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
+	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
+	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
+	the entire message is always fetched.
+
+	Completion: note if there are no new entries, then KErrNone, and progress
+	information is a null descriptor.			
+	*/	
+	KIMAP4MTMConnectAndMoveAllMailAndDisconnect,
+
+	/** Populate the specified messages, assuming a new connection does not need to be made. 
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to populate.
+	
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.		
+	*/
+	KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected,
+
+	/** Connect to a specified service, populate the specified messages, 
+	and stay connected.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to populate.
+	
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.		
+	*/
+	KIMAP4MTMConnectAndPopulateMailSelectionAndStayOnline,
+	
+	/** Connect to a specified service, populate the specified messages, 
+	and disconnect afterwards.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
+	followed by the IDs of the messages to populate.
+	
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.		
+	*/
+	KIMAP4MTMConnectAndPopulateMailSelectionAndDisconnect,
+
+	/** Populate the new messages in a specified folder, assuming a new connection does 
+	not need to be made. 
+	
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to populate.
+
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.			
+	*/
+	KIMAP4MTMPopulateNewMailWhenAlreadyConnected,
+
+	/** Populate all messages in a specified folder, assuming a new connection does 
+	not need to be made. 
+
+	Pre-condition: a connected service.
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to populate.
+	
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.		
+	*/
+	KIMAP4MTMPopulateAllMailWhenAlreadyConnected,
+
+	/** Connect to a specified service, populate the new messages in a specified 
+	folder, and stay connected. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to populate.
+
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.			
+	*/
+	KIMAP4MTMConnectAndPopulateNewMailAndStayOnline,
+	
+	/** Connect to a specified service, populate the new messages in a specified 
+	folder, and disconnect afterwards. 
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to populate.
+
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.			
+	*/
+	KIMAP4MTMConnectAndPopulateNewMailAndDisconnect,
+
+	/** Connect to a specified service, populate all messages in a specified 
+	folder, and stay connected. 
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to populate.
+	
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMConnectAndPopulateAllMailAndStayOnline,
+	
+	/** Connect to a specified service, populate all messages in a specified 
+	folder, and disconnect afterwards. 
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
+	@c aSelection[1] should contain the entry ID of the folder containing
+	the messages to populate.
+	
+	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
+	specifying the message parts to fetch and size limits on what is fetched.
+
+	Completion: note if there are no entries to populate, then KErrNone, and progress
+	information is a null descriptor.	
+	*/
+	KIMAP4MTMConnectAndPopulateAllMailAndDisconnect,
+
+	/** Creates a new email message. 
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
+	which to create the message.
+	 
+	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
+	message creation flags and message type.
+	
+	The operation object returned is a CImEmailOperation. Final progress information 
+	from this contains the ID of the newly created message.
+	*/
+	KIMAP4MTMCreateNewEmailMessage,
+	
+	/** Creates a new reply message. 
+
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
+	which to create the message; @c aSelection[1] should contain the entry ID 
+	of the message to which to create a reply.
+	 
+	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
+	message creation flags and message type.
+	
+	The operation object returned is a CImEmailOperation. Final progress information 
+	from this contains the ID of the newly created message.
+	*/
+	KIMAP4MTMCreateReplyEmailMessage,
+		
+	/** Creates a new forwarded message.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
+	which to create the message; @c aSelection[1] should contain the entry ID 
+	of the message to forward.
+	 
+	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
+	message creation flags and message type.
+	
+	The operation object returned is a CImEmailOperation. Final progress information 
+	from this contains the ID of the newly created message.
+	*/
+	KIMAP4MTMCreateForwardEmailMessage,
+
+	/** Creates a new forwarded message, with the original message as an attachment.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
+	which to create the message; @c aSelection[1] should contain the entry ID 
+	of the message to forward.
+	 
+	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
+	message creation flags and message type.
+	
+	The operation object returned is a CImEmailOperation. Final progress information 
+	from this contains the ID of the newly created message.
+	*/
+	KIMAP4MTMCreateForwardAsAttachmentEmailMessage,
+
+	/** Creates a new message-receipt message.
+	
+	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
+	which to create the message; @c aSelection[1] should contain the entry ID 
+	of the original message for which the receipt is required.
+	 
+	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
+	message creation flags and message type.
+	
+	The operation object returned is a CImEmailOperation. Final progress information 
+	from this contains the ID of the newly created message.
+	*/
+	KIMAP4MTMCreateReceiptEmailMessage
+};
+
+#endif