Hi,
I tested your scenario with this code, but it works as expected, the copied message stays where it was copied:
// connect, login and
// get unique id of a message to test copy-delete scenario
// copy test message
ImapCopyResult copyResult = client.CopyMessage(new ImapMessageSet(uniqueID), targetFolder);
Console.WriteLine("Copy result message count: {0}", copyResult.MessageCount);
// see if it is copied
client.SelectFolder(targetFolder);
ImapMessageCollection copiedList = client.GetMessageList(copyResult.GetTargetMessageSet());
Console.WriteLine("Count of messages using copy result's target message set: {0}", copiedList.Count);
// delete original message
Console.WriteLine("Callind Delete on original.");
client.SelectFolder(originalFolder);
client.DeleteMessage(new ImapMessageSet(uniqueID));
// see if copied message is deleted or is still there
client.SelectFolder(targetFolder);
ImapMessageCollection copiedListAfterDelete = client.GetMessageList(copyResult.GetTargetMessageSet());
Console.WriteLine("Count of messages using copy result's target message set after delete: {0}", copiedListAfterDelete.Count);
Can you please share some test code which behaves like you described? And please check your gmail IMAP settings, how it treats copied messages and how the delete operation is performed.