質問

私は、輸出から得たHTMLを搭載した流れを持っています。私は(他の方法がありますか?)バイト[]でストリームからこのHTMLを取ることができ、私はHTMLメールの本文にこのバイト[]を書きたい。

これを行う理由は、私はHTMLにレポートをエクスポートし、代わりにPDFファイルにエクスポートするの、メールの本文にこのデータを使用し、添付ファイルとして送信したいということです。

私は何かを追加する必要がある場合は私に知らせて、それは十分に明らかだと思います。

おかげ

役に立ちましたか?

解決

私はそれを発見しました。それは私が私がメールに直接フォーマットされた出力を有する、希望の結果を見つけることができませんでしたが、質問は出力HTMLにストリーム内に格納されたバイトを使用する方法の詳細だった、非常に簡単です。

私は、ストリームを取り、StreamReaderを作成します:

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

すると、メールオブジェクトのボディに、私は、StreamReaderをを使用してストリームの内容を読みます:

mail.Body = reader.ReadToEnd();

それはすべてです。あなたはどう思いますか?

他のヒント

あなただけのストリームを閉じたり、メッセージを送信した後までそれをクリーンアップしません、マルチパートMIMEメッセージを使用し、同様にAlternateViewコンストラクタにストリームを渡すことができます(クリーンアップを処理するためにMailMessage.Dispose()を呼び出し)あなたが好きならば、あなたのために。あなたはあなたのソリューションで行く場合は、コンテンツタイプは、それはそれは、プレーンテキストだと思いますので、それ以外の場合は受信側のメールクライアントがHTMLとしてHTMLが表示されない場合があり、正しく設定を取得するためにはtrueにmail.IsBodyHtmlを設定してください。メールの出力は、メールクライアントにおかしい場合、それはおそらく理由です。

コードは(関連部分のみに切り捨て)、次のようになります:

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top