/// <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; } }