コード例 #1
0
        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();
            }
        }