0

文字列ビルダーを使用してクラスファイルでExecmsdb.dbo.sp_send_dbmailを使用して、送信元アドレスと送信先アドレスを追加しています。ローカルソリューションフォルダーにあるファイルを添付する必要があります (ソリューション内でフォルダーを作成しました)

          strSql.Append("Exec msdb.dbo.sp_send_dbmail @profile_name='SLAToolProfile',");strSql.Append("@recipients='");
        strSql.Append(eMailToaddresses);

        strSql.Append("',@file_attachments='");
        string Path = "~/Material/study material.doc";
        strSql.Append(Path);

上記の形式を使用すると、ファイルが添付されたエラーが発生しました。ソリューション内のローカルフォルダーにあるパスをどのように言及すればよいですか?

4

2 に答える 2

0

これを使って:

string filename = "study material.doc";
string storePath = Server.MapPath("~/Material");
string finalPath = Path.Combine(storePath,filename);

Server.MapPath()仮想パスを絶対アプリケーションパスに変換します。

于 2012-04-30T08:36:16.053 に答える
0

VirtualPathUtility.ToAbsolute メソッドを使用する必要があります。

strSql.Append("Exec msdb.dbo.sp_send_dbmail @profile_name='SLAToolProfile',");strSql.Append("@recipients='");
        strSql.Append(eMailToaddresses);

        strSql.Append("',@file_attachments='");
        string Path = VirtualPathUtility.ToAbsolute("~/Material/study material.doc");
        strSql.Append(Path);

それはうまくいくはずです

http://msdn.microsoft.com/en-us/library/ms150160(v=vs.90).aspx

アップデート

もう少し掘り下げてみると、sp_send_dbmail を使用すると、添付ファイルの場所は、コードを実行しているマシンではなく、 DB サーバーに相対的な場所であることがわかりました。したがって、最初の問題は、このファイルの場所を DB サーバーにアクセスできるようにすることです。つまり、ファイル共有と UNC の場所を使用します。したがって、使用できません~。Db サーバーは、ルートがどこにあるかを理解していません...!

于 2012-04-30T08:25:14.097 に答える