Imap |
public override Task<UniqueIdMap> MoveToAsync( IList<UniqueId> uids, IMailFolder destination, CancellationToken cancellationToken = default )
Exception | Condition |
---|---|
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. |
FolderNotFoundException | destination 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. |
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.