从C#代码后面附加文件到sp_send_dbmail

时间:2017-02-01 19:18:20

标签: c# asp.net sql-server-2008

我目前正在开发一个生成自定义PDF的asp.net页面,然后需要通过电子邮件发送给客户。目前,我们将sp_send_dbmail存储过程称为发送电子邮件,但我们尚未将文件附加到其中。

我四处寻找,但它看起来越来越像sp_send_dbmail只能发送存储在数据库中或运行服务器的计算机上的附件。这将通过@file_attachments参数。另一种选择是使用@query@attach_query_result_as_file参数。

以下是我们目前用于发送电子邮件的代码:

public static void sendEmail(string emailAddress, string body)
{

    Database db = DatabaseFactory.CreateDatabase();
    DbCommand cmd = db.GetStoredProcCommand("msdb.dbo.sp_send_dbmail");

    db.AddInParameter(cmd, "@profile_name", DbType.String, "Profile");
    db.AddInParameter(cmd, "@recipients", DbType.String, emailAddress);
    db.AddInParameter(cmd, "@subject", DbType.String, "Report: ");
    db.AddInParameter(cmd, "@body", DbType.String, body);
    db.AddInParameter(cmd, "@body_format", DbType.String, "HTML");

    db.ExecuteNonQuery(cmd);

}

我已尝试添加

db.AddInParameter(cmd, "@file_attachments", DbType.Binary, attachment);

db.AddInParameter(cmd, "@query", DbType.String, "SELECT " + attachment + " AS 'attachment'");
db.AddInParameter(cmd, "@attach_query_result_as_file", DbType.Boolean, true);
db.AddInParameter(cmd, "@query_attachment_filename", DbType.String, "pdf");

byte[] attachment代表pdf文件。两者都没有效果。

我也试过给@file_attachments指向pdf的直接路径,但pdf在我的本地计算机上,而不是SQL服务器上,所以它无法找到它。

0 个答案:

没有答案