0

Spamassassin のトレーニングに役立つユーティリティを開発しようとしています。リストビューの上部に件名、送信者などを入力し、下部に 2 つのプレビュー/ビュー ペイン、1 つのテキスト ボックスと 1 つのメール ビューアーを取得しました。メッセージにスパムまたはハムのマークを付けます。だから私は最初にそれらを見なければなりません。

メッセージソースをテキストボックスに簡単に表示できます。しかし、リッチメールメッセージの表示には成功しませんでした。Webブラウザコントロールを試してみたところ、いくつかのメッセージが非常にうまく表示され、ほとんど表示されませんでした-メッセージソースとして表示されました.

メールメッセージを表示する方法がまったくわかりません。特別なコンポーネント/コントロールはありますか? Win7 に組み込まれているプレビュー機能を使用できますか? または、自分のユーティリティで Explorer のプレビュー メカニズムを使用できますか? 申し訳ありませんが、質問はまだコード行に関連していないため、現時点ではコードを追加できません。

4

2 に答える 2

1

問題は、メールに表示が難しい添付ファイルが埋め込まれていることです。これを解決するためにいくつかのコードを書くことができますが、それは時間と費用がかかり、あなたが望むほどうまく機能しないかもしれません。

私は数年前に似たようなものでいくつかの問題を抱えていました。その時点で私はこのようなものを使用しましたhttp://forums.asp.net/t/1350519.aspx

更新:OutlookをPCにインストールする必要があります。Outlook Expressでも同様のことができますが、COMdllを見つけるだけです。

于 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 に答える