Example #1
0
        private void messageListBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            int uid = Int32.Parse(messageListBox.SelectedItem.ToString());

            UpdateLabel("Getting header for message id " + uid);
            IMessage msg = client.MailboxManager.GetMessageByUID(uid, folder.ID);

            FullMessageRequest fmr = new FullMessageRequest(client, msg);

            fmr.MessageComplete += new FullMessageCompleteCallback(fmr_MessageComplete);
            fmr.MessageProgress += new FullMessageProgressCallback(fmr_MessageProgress);
            fmr.Start();
            //IMAPRequestManager.SubmitRequest(new MessageHeaderRequest(msg, MessageHeaderComplete), false);
            //IMAPRequestManager.SubmitRequest(new MessageStructureRequest(msg, MessageStructureComplete), false);
            //client.RequestManager.SubmitBatchRequest(
            //    new SimpleBatchRequest(new IRequest[]
            //        {
            //            new MessageHeaderRequest(msg, MessageHeaderComplete),
            //            new MessageStructureRequest(msg, MessageStructureComplete)
            //        }), false);
        }
Example #2
0
        /// <summary>
        /// Downloads every message in every folder in the system. Used for building the local cache
        /// </summary>
        /// <param name="progCallback"></param>
        /// <param name="completedCallback"></param>
        public void DownloadEntireAccount(AccountDownloadProgressCallback progCallback, AccountDownloadCompleteCallback completedCallback)
        {
            int messagesCompleted = 0;

            IFolder[]        folderList    = GetAllFolders();
            TimeSpan         ts            = new TimeSpan();
            int              totalMessages = GetMessageCount();
            ManualResetEvent mre           = new ManualResetEvent(false);

            foreach (IFolder folder in folderList)
            {
                foreach (IMessage msg in folder.Messages)
                {
                    FullMessageRequest fmr = new FullMessageRequest(_client, msg);
                    fmr.MessageComplete += delegate(IMessage m, TimeSpan totalTime)
                    {
                        progCallback(++messagesCompleted, totalMessages, m.Folder);
                        StoreMessage(m);
                        ts.Add(totalTime);
                        if (messagesCompleted >= totalMessages)
                        {
                            mre.Set();
                        }
                    };
                    fmr.MessageProgress += delegate(IMessage m, long receieved, long total)
                    {
                        Console.CursorLeft = 0;
                        Console.Write("{0}/{1}k downloaded", receieved / 1024, total / 1024);
                    };
                    fmr.MessageProgress += delegate(IMessage m, long bytesReceived, long totalBytes) { };
                    fmr.Start();
                }
            }

            mre.WaitOne();

            completedCallback(folderList.Length, messagesCompleted, ts.Ticks);
        }