0

我正在尝试开发一种有助于训练 Spamassassin 的实用程序。我在顶部填充了主题、发件人等的列表视图,底部有两个预览/查看窗格、一个文本框和一个邮件查看器。如果它们是垃圾邮件或火腿邮件,我会标记它们。所以我必须先见他们。

我可以轻松地在文本框中显示消息源。但是我无法成功显示丰富的邮件消息。我尝试了浏览器控件,它显示了一些消息非常好,并且没有显示 - 显示为消息源 - 大多数。

我完全不知道如何显示邮件消息。是否有任何特殊的组件/控件?我可以使用 Win7 的内置预览功能吗?或者我可以在我自己的实用程序上使用 Explorer 的预览机制吗?抱歉,目前我无法添加任何代码,因为该问题与任何代码行都不相关。

4

2 回答 2

1

问题是您的电子邮件嵌入了难以显示的附件。您可以编写一些代码来解决这个问题,但它很耗时,而且可能效果不如您所愿。

几年前我遇到了一些类似的问题。我当时使用了类似的东西http://forums.asp.net/t/1350519.aspx

更新:需要在 PC 上安装 Outlook。使用 Outlook Express 可以完成类似的操作,您只需要找到 COM dll。

于 2012-10-31T22:01:09.103 回答
0

我使用来自https://github.com/andyedinborough/aenetmail的AE.Net.Mail并进行了一些测试,效果非常好!

重温代码:

            string htmlBody = "", textBody = "";

            MailMessage msg = new MailMessage();
            msg.Load(cellBody.Value.ToString(), false); // cellBody.Value.ToString() is raw message

            if (msg.Body != null)
            {
                switch (msg.ContentType)
                {
                    case "text/plain":
                        textBody = msg.Body;
                        break;
                    case "text/html":
                        htmlBody = msg.Body;
                        break;
                }
            }


            if(msg.AlternateViews.Count > 0)
            {
                foreach (Attachment alternateView in msg.AlternateViews)
                {

                    switch (alternateView.ContentType)
                    {
                        case "text/plain":
                            textBody = alternateView.Body;
                            break;
                        case "text/html":
                            htmlBody = alternateView.Body;
                            break;
                    }
                }
            }

            if(msg.Attachments.Count > 0)
            {
                foreach (Attachment attachment in msg.Attachments)
                {

                    switch (attachment.ContentType)
                    {
                        case "text/plain":
                            textBody = attachment.Body;
                            break;
                        case "text/html":
                            htmlBody = attachment.Body;
                            break;
                        case "message/rfc822":
                            break;
                    }
                }
            }

            textBody = "<pre>" + textBody + "</pre>";

            if (htmlBody == "")
                webBrowser1.DocumentText = textBody;
            else
                webBrowser1.DocumentText = htmlBody;


            textBox1.Text = cellBody.Value.ToString();
于 2012-10-31T22:59:38.180 回答