private void CopyMessages(IMailFolder folder, IMailFolder dest) { try { folder.Open(FolderAccess.ReadOnly); dest.Open(FolderAccess.ReadWrite); UniqueIdRange r = new UniqueIdRange(UniqueId.MinValue, UniqueId.MaxValue); var headers = new HashSet <HeaderId>(); headers.Add(HeaderId.Received); headers.Add(HeaderId.Date); headers.Add(HeaderId.MessageId); headers.Add(HeaderId.Subject); headers.Add(HeaderId.From); headers.Add(HeaderId.To); headers.Add(HeaderId.Cc); headers.Add(HeaderId.ResentMessageId); var msgList = folder.Fetch(r, MessageSummaryItems.UniqueId | MessageSummaryItems.InternalDate | MessageSummaryItems.Flags, headers); int total = msgList.Count; int i = 1; foreach (var msg in msgList) { Console.WriteLine($"Copying {i++} of {total}"); CopyMessage(msg, folder, dest); if (i % 100 == 0) { dest.Check(); } } } finally { folder.Close(); dest.Close(); } }