0

スケジュールされた電子メール情報を SQL Server 2005 に保存しています。電子メール情報には、さまざまなファイル タイプの 0 ~ 3 個の添付ファイルが含まれています。「x」分実行し、SQL Server からの電子メール情報をデータセットに入力し、電子メールを作成し、ASPNet EMail 経由で送信する VB.net Windows サービスがあります。

BLOB から添付ファイルを作成して追加しようとすると、添付ファイルが 15 バイトのテキスト ファイルであっても、メール送信メソッドがタイムアウトします。ファイルへのパスを直接ハードコーディングすると正常に機能します。いくつかの方法を試しましたが、うまくいきません。

4

1 に答える 1

0

うーん、似たようなことをしたことがあります。添付ファイルごとに、データをバイナリ列として保存し、ファイルのサイズをバイト単位で含む別の列に保存します。データベースから取得するために、次のようなものを書きました(SqlCommandおよびSqlDataReaderクラスを使用):

attachment = new byte[size];

sqlReader.GetBytes(sqlReader.GetOrdinal("attachment"), 0, attachment, 0, size);

System.IO.MemoryStream s = new System.IO.MemoryStream(attachment, true);
s.Write(attachment, 0, attachment.Length);

そして、MailMessage クラス (略して mm) に結び付けられすぎています。

System.IO.MemoryStream s = new System.IO.MemoryStream(attachment, false);

Attachment attached = new Attachment(s, "some file name");
mm.Attachments.Add(attached);

たぶん、これらの抽出物が役立つでしょう!2 つの異なるカスタム クラスからコードをプルしたので、各抽出での MemoryStream オブジェクトが少し扱いに​​くいです。

于 2009-07-23T12:35:59.680 に答える