Click or drag to resize
MimeKit

ImapFolderMoveToAsync(IListUniqueId, IMailFolder, CancellationToken) Method

Asynchronously move the specified messages to the destination folder.

Namespace: MailKit.Net.Imap
Assembly: MailKit (in MailKit.dll) Version: 4.3.0
Syntax
C#
public override Task<UniqueIdMap> MoveToAsync(
	IList<UniqueId> uids,
	IMailFolder destination,
	CancellationToken cancellationToken = default
)

Parameters

uids  IListUniqueId
The UIDs of the messages to move.
destination  IMailFolder
The destination folder.
cancellationToken  CancellationToken  (Optional)
The cancellation token.

Return Value

TaskUniqueIdMap
The UID mapping of the messages in the destination folder, if available; otherwise an empty mapping.

Implements

IMailFolderMoveToAsync(IListUniqueId, IMailFolder, CancellationToken)
IMailFolderMoveToAsync(IListUniqueId, IMailFolder, CancellationToken)
Exceptions
ExceptionCondition
ArgumentNullException

uids is null.

-or-

destination is null.

ArgumentException

uids is empty.

-or-

One or more of the uids is invalid.

-or-

The destination folder does not belong to the ImapClient.

ObjectDisposedException The ImapClient has been disposed.
ServiceNotConnectedException The ImapClient is not connected.
ServiceNotAuthenticatedException The ImapClient is not authenticated.
FolderNotFoundExceptiondestination does not exist.
FolderNotOpenException The ImapFolder is not currently open in read-write mode.
OperationCanceledException The operation was canceled via the cancellation token.
IOException An I/O error occurred.
ImapProtocolException The server's response contained unexpected tokens.
ImapCommandException The server replied with a NO or BAD response.
Remarks

Moves the specified messages to the destination folder.

If the IMAP server supports the MOVE extension (check the Capabilities property for the Move flag), then this operation will be atomic. Otherwise, MailKit implements this by first copying the messages to the destination folder, then marking them for deletion in the originating folder, and finally expunging them (see Expunge(IListUniqueId, CancellationToken) for more information about how a subset of messages are expunged). Since the server could disconnect at any point between those 3 (or more) commands, it is advisable for clients to implement their own logic for moving messages when the IMAP server does not support the MOVE command in order to better handle spontanious server disconnects and other error conditions.

See Also