0

エクスポートから取得したHTMLがロードされたストリームがあります。このhtmlをストリームからbyte[]で取得でき(他の方法はありますか?)、このbyte[]をhtmlメール本文に書き込みたいと思います。

これを行う理由は、レポートをhtmlにエクスポートし、このデータをpdfにエクスポートして添付ファイルとして送信するのではなく、メールの本文で使用するためです。

それが十分に明確であることを願って、私が何かを追加する必要があるかどうか私に知らせてください。

ありがとう

4

2 に答える 2

0

見つけた。非常に簡単です。希望する結果は見つかりませんでしたが、フォーマットされた出力を直接メールに送信しましたが、問題は、ストリームに格納されたバイトを使用してhtmlを出力する方法に関するものでした。

ストリームを取得してStreamReaderを作成します。

            stream.Position = 0;
            StreamReader reader = new StreamReader(stream);

次に、メールオブジェクトの本文で、StreamReaderを使用してストリームの内容を読み取ります。

mail.Body = reader.ReadToEnd();

それで全部です。どう思いますか?

于 2009-08-24T03:39:13.463 に答える
0

マルチパート Mime メッセージを使用して、ストリームを AlternateView コンストラクターに渡すこともできます。メッセージを送信するまで、ストリームを閉じたり、クリーンアップしたりしないでください (MailMessage.Dispose() を呼び出してクリーンアップを処理する場合)。あなたが好きです)。ソリューションを使用する場合は、必ず mail.IsBodyHtml を true に設定してコンテンツ タイプを正しく設定してください。そうしないと、受信メール クライアントが HTML を HTML として表示しない可能性があります。プレーン テキストと見なされるためです。メール クライアントでメールの出力がおかしく見える場合は、おそらくそれが原因です。

コードは次のようになります (関連する部分のみに切り詰められています)。

MailMessage message = new MailMessage();
message.AlternateViews.Add(new AlternateView(stream, new ContentType("text/HTML"));
// do NOT set Body, IsBodyHtml, or ContentType on MailMessage or 
// you'll mess up the mime types

smtpClient.Send(message);
于 2009-08-29T07:18:05.753 に答える