Beispiel #1
0
        /// <summary>
        /// Handles the form's Shown event.
        /// </summary>
        /// <param name="e">The even arguments.</param>
        protected override void OnShown(EventArgs e)
        {
            base.OnShown(e);

            try
            {
                _client.Progress += _client_Progress;

                // Create a new memory stream to store the downloaded message.
                MemoryStream mem = new MemoryStream();
                // Get message data to the newly created memory stream.
                _client.DownloadMessage(_sequenceId, mem);
                // Create a new message from the memory stream.
                mem.Seek(0, SeekOrigin.Begin);
                // Get raw data;
                byte[] rawData = mem.ToArray();

                _msg = new MailMessage(mem);

                // Fill from, to, cc.
                txtFrom.Text = _msg.From.ToString();
                txtTo.Text   = _msg.To.ToString();
                txtCc.Text   = _msg.Cc.ToString();

                // Fill subject.
                txtSubject.Text = _msg.Subject;

                saveAsToolStripMenuItem.Enabled    = true;
                copyToolStripMenuItem.Enabled      = true;
                selectAllToolStripMenuItem.Enabled = true;
                Util.EnableCloseButton(this, true);

                // Fill the attachment list.
                if (_msg.Attachments.Count > 0)
                {
                    foreach (Attachment at in _msg.Attachments)
                    {
                        cbxAttachment.Items.Add(at.FileName);
                    }
                }

                if (cbxAttachment.Items.Count > 0)
                {
                    cbxAttachment.SelectedIndex = 0;
                    saveAttachmentsToolStripMenuItem.Enabled = true;
                }
                else
                {
                    cbxAttachment.Enabled = false;
                    saveAttachmentsToolStripMenuItem.Enabled = false;
                }

                // Fill body plain text version.
                txtBody.Text = _msg.BodyText.Replace("\n", "\r\n");
                // Fill body HTML version.
                txtHtml.Text = _msg.BodyHtml.Replace("\n", "\r\n");

                HeaderCollection headers = _msg.Headers;

                // Show all message header
                for (int i = 0; i < headers.Count; i++)
                {
                    Header header = headers[i];

                    // add name column
                    ListViewItem item = new ListViewItem(header.Name);

                    // add header raw content column
                    item.SubItems.Add(header.Raw);

                    // show unparsed (corrupted) headers in red
                    if (header.Unparsable)
                    {
                        item.ForeColor = System.Drawing.Color.Red;
                    }

                    // add row to the ListView
                    lvwHeaders.Items.Add(item);
                }

                // Fill raw message.
                string rawtext = System.Text.Encoding.Default.GetString(rawData, 0, Math.Min(rawData.Length, 500000));
                txtRawText.Text = rawtext;
            }
            catch (Exception exc)
            {
                if (!_abort)
                {
                    Util.ShowError(exc);
                }
                else
                {
                    this.DialogResult = DialogResult.Abort;
                }

                this.Close();
            }
            finally
            {
                // Unregister the Progress event handler.
                _client.Progress -= _client_Progress;
                toolStripProgressLabel.Visible        = false;
                toolStripProgressBar.Visible          = false;
                toolStripProgressCancelButton.Visible = false;
                toolStripStatusLabel.Visible          = true;
            }
        }