Moves the specified messages from the currently selected folder to the specified folder, and retrieves UIDs assigned to the moved messages in the destination folder.
true if the messages were moved successfully; otherwise, false.
To learn how to specify a valid message sequence (messageIndexSet value), see DownloadEnvelopes topic.
When result is specified and the server supports UIDPLUS extension, CopyMessages method will set the supplied UidPlusResult object properties as below:
| Property | Value |
|---|---|
| IsSupported | true |
| SrcUids | The UidCollection object containing the UIDs of the messages which had been moved from the source folder. |
| SrcUidString | The string containing the message sequence of UIDs of the messages which had been moved from the source folder. |
| DestUids | The UidCollection object containing the UIDs assigned to the moved messages in targetFolderName folder. |
| DestUidString | The string containing the message sequence of UIDs assigned to the moved messages in targetFolderName folder. |
| DestUidValidity | The UIDVALIDITY of the targetFolderName folder. |
Note The IMAP4 protocol actually does not directly support moving messages between folders. MailBee emulates moving messages as a sequence of copying, marking copied messages as deleted in the source folder, and then expunging deleted messages. This operation performs quicker when the server supports UIDPLUS extension (because UIDPLUS allows the client to expunge specific "\Deleted" messages rather than all such messages in the folder). If UIDPLUS is not supported, it takes a bit longer to move messages since MailBee needs to preserve messages which have already had "\Deleted" flag set to the moment when MoveMessages method started. If MailBee just expunged the deleted messages from the folder, this would affect not only messages being copied but rather all messages which have already had "\Deleted" flag set. MailBee avoids this by temporary removing "\Deleted" flag from the messages which have already had this flag, and then restoring this flag back when the moving completes. However, when all messages in the folder are being moved, it's not required to care about remaining messages. Thus, when UIDPLUS is not supported, moving all messages is performed in a less count of steps than moving specific messages only.
| Exception Type | Condition |
|---|---|
| MailBeeException | An error occurred and ThrowExceptions is true. |
This sample moves the first message from the inbox folder to the Sent folder (it's assumed the Sent folder already exists and the inbox contains at least 1 message). The UIDs assigned to the moved messages in the destination folder is displayed if UIDPLUS capability is supported by the server.
[C#] using System; using MailBee; using MailBee.ImapMail; class Sample { static void Main(string[] args) { Imap imp = new Imap(); // Connect to the server, login and select inbox. imp.Connect("mail.somehost.com"); imp.Login("jdoe", "secret"); imp.SelectFolder("INBOX"); // Prepare the object that will receive moving results. UidPlusResult res = new UidPlusResult(); // Move the first message from Inbox into Sent. imp.MoveMessages("1", false, "Sent", res); if (res.IsSupported) { Console.WriteLine("UID assigned to the moved message is " + res.DestUidString); } else { Console.WriteLine("Sorry, UIDPLUS is not supported by the server"); } // Disconnect from the server. imp.Disconnect(); } }
[Visual Basic] Imports System Imports MailBee Imports MailBee.ImapMail Module Sample Sub Main(ByVal args As String()) Dim imp As New Imap ' Connect to the server, login and select inbox. imp.Connect("mail.somehost.com") imp.Login("jdoe", "secret") imp.SelectFolder("INBOX") ' Prepare the object that will receive moving results. Dim res As New UidPlusResult ' Move the first message from Inbox into Sent. imp.MoveMessages("1", False, "Sent", res) If res.IsSupported Then Console.WriteLine("UID assigned to the moved message is " & res.DestUidString) Else Console.WriteLine("Sorry, UIDPLUS is not supported by the server") End If ' Disconnect from the server. imp.Disconnect() End Sub End Module
Imap Class | MailBee.ImapMail Namespace | Imap.MoveMessages Overload List | CopyMessages