0

最近、 System.Net.Mail.Attachmentを使用してファイルを電子メールに添付しているコードを調べていました。現在の実装では、添付ファイルをファイルとしてストレージデバイスに保存し、一意の名前を付けていました。次に、このファイルは次のようにMailMessageに追加されました。

Attachment data = new Attachment(filename);
message.Attachments.Add(data);

その後、電子メールが送信され、ファイルがストレージデバイスから削除されました。

ファイルをMemoryStream(すでに保存されている)に保存して、それを電子メールの添付ファイルとして渡す方が、より速く/より良いのではないでしょうか。MailMessageクラスのどこかで、ファイルがストリームに読み込まれ、まったく同じ方法で送信され、ディスクに保存するプロセス全体が完全に不要になると思います。

私の腸...ディスクへの書き込みは完全に不必要であり、ストリームの使用を実装する必要があります。(私が間違っている?)

4

3 に答える 3

4

はい、他の理由でその手順が必要でない限り、ディスクへの書き込みは避けたほうがよいでしょう。クラスはAttachment、コンストラクターへの引数として、物理ファイル パスを指定するのではなく、ストリームとファイル名を受け取ることができます。

http://msdn.microsoft.com/en-us/library/6sdktyws.aspx

于 2012-06-01T13:24:41.943 に答える
0

もちろん; Attachmentストリームと名前を受け取るコンストラクターさえあるため、ファイルをディスクに書き込むことは完全に削除できます。

于 2012-06-01T13:25:24.983 に答える
0

これは間違いなく可能ですが、変更を行う前に次の 2 つのことを考慮してください。 1. 添付ファイルが MemoryStream として存続する時間。2. ファイルを書き込まないとかなり長くなる場合は、システムのメール スループットとその結果のメモリ プレッシャも影響します。

于 2012-06-01T13:30:47.323 に答える