我目前正在开发一个生成自定义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服务器上,所以它无法找到它。