18

PDFジェネレーターを使用してユーザーにファイルを送信するプロジェクトがあります。代わりに、このファイルを電子メールに添付するオプションをユーザーに提供したいのですが、Streamオブジェクトと添付ファイルロジックを一緒に使用するのに問題があります。

ABCpdfから始めます。これには、2つの保存方法があります。Streamに保存するか、文字列を指定すると、そこにあるディスク上のファイルに保存しようとします。どちらも問題ありません。

Stream stream = new MemoryStream();
myPdf.Save(stream);

この時点では、ほとんどすべてがクールです。stream数キロバイトのデータがあり、ファイルに.Save()を実行すると、同じバイト数の実際のファイルが得られます。

したがって、この時点で電子メールに添付します(メールオブジェクトを初期化した後、To:およびFrom:などを設定した後):

mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();

...これにより、0バイトの電子メールを受信できますが、ファイル名は適切です。

私がオンラインで見つけたすべての例では、StreamReader、StreamWriter、Flush()などを使用しています。単にストリームを渡すよりも複雑なように見えますが、おそらく1行か2行だけが複雑です。これらの例はいずれもストリームで始まりません-配列をストリームに変換して、それがいかに簡単かを示したり、ディスクからファイルを取得したりしようとしています(これはできません。そのため、私たちは興奮しています。ストリームを使用する)。

とにかく、私が間違っていることやすべきことを誰かが説明してくれれば、本当にありがたいです。ありがとう。

4

2 に答える 2

39

推測...nitを送信する前に最初までバックデータストリーム

// Set the position to the beginning of the stream.
stream.Seek(0, SeekOrigin.Begin);
mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();
于 2009-08-22T22:51:57.883 に答える
-1

ストリームを添付するのではなく、ファイルを保存してから添付してみましたか?

追加した

ここでの通常のプロセスは

  1. ストリームを使用してディスク上にファイルを作成します

  2. ファイルをメールに添付する

  3. 使い終わったらファイルを削除します。

于 2009-08-22T22:48:43.100 に答える