Example #1
0
        private void lstEnvelopes_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selectedMessage = (MessageContainer)lstEnvelopes.SelectedItem;
            var selectedMailbox = (Mailbox)lstMailboxes.SelectedItem;

            if (selectedMessage == null)
            {
                return;
            }

            App.Log.Info("Selected message: " + selectedMessage.Uid);

            // First check if there is already a thread running to do some work.
            if (thread_downloadMessage != null && thread_downloadMessage.IsAlive)
            {
                // Abort the thread if it is already running
                thread_downloadMessage.Abort();
            }

            if (selectedMessage.BodyStructure == null)
            {
                var param = new Collection <Object> {
                    selectedMailbox, selectedMessage
                };

                if (selectedMessage.HtmlView == null)
                {
                    thread_downloadMessage = new Thread(DownloadEmail);
                    // Finally start the thread with the parameters
                    thread_downloadMessage.Start(param);
                }
                else
                {
                    wbMailRenderer.LoadHTML(selectedMessage.HtmlView.Text);
                }
            }
            else
            {
                if (selectedMessage.HtmlView != null)
                {
                    wbMailRenderer.LoadHTML(selectedMessage.HtmlView.Text);
                }
                else // There is a bodystructure, but no view yet.
                {
                    var param = new Collection <Object>();
                    param.Add(selectedMailbox);
                    param.Add(selectedMessage);

                    if (selectedMessage.HtmlView == null)
                    {
                        thread_downloadMessage = new Thread(DownloadEmail);
                        // Finally start the thread with the parameters
                        thread_downloadMessage.Start(param);
                    }
                    else
                    {
                        wbMailRenderer.LoadHTML(selectedMessage.HtmlView.Text);
                    }
                    //App.Log.Error("Message " + selectedMessage.Uid + " has a BodyStructure, but no View!");
                }
            }

            // Set the mail to "Seen"
            var set = SequenceSet.CreateUidSet(selectedMessage.Uid);

            Imap.Client.Store(set, MessageFlags.Seen, StoreProcedures.Add);

            App.Log.Debug("Message " + selectedMessage.Uid + " set to 'seen'.");
        }