エクスポートから取得したHTMLがロードされたストリームがあります。このhtmlをストリームからbyte[]で取得でき(他の方法はありますか?)、このbyte[]をhtmlメール本文に書き込みたいと思います。
これを行う理由は、レポートをhtmlにエクスポートし、このデータをpdfにエクスポートして添付ファイルとして送信するのではなく、メールの本文で使用するためです。
それが十分に明確であることを願って、私が何かを追加する必要があるかどうか私に知らせてください。
ありがとう
エクスポートから取得したHTMLがロードされたストリームがあります。このhtmlをストリームからbyte[]で取得でき(他の方法はありますか?)、このbyte[]をhtmlメール本文に書き込みたいと思います。
これを行う理由は、レポートをhtmlにエクスポートし、このデータをpdfにエクスポートして添付ファイルとして送信するのではなく、メールの本文で使用するためです。
それが十分に明確であることを願って、私が何かを追加する必要があるかどうか私に知らせてください。
ありがとう
見つけた。非常に簡単です。希望する結果は見つかりませんでしたが、フォーマットされた出力を直接メールに送信しましたが、問題は、ストリームに格納されたバイトを使用してhtmlを出力する方法に関するものでした。
ストリームを取得してStreamReaderを作成します。
stream.Position = 0;
StreamReader reader = new StreamReader(stream);
次に、メールオブジェクトの本文で、StreamReaderを使用してストリームの内容を読み取ります。
mail.Body = reader.ReadToEnd();
それで全部です。どう思いますか?
マルチパート 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);