C# - 将保存在数据库中的文件附加到电子邮件中

时间:2011-07-21 13:53:35

标签: c# sql file-upload email-attachments binary-data

如何将保存在MS SQL数据库中的一个或多个文件添加到电子邮件中?我已经知道如何附加保存在目录中或文件上的文件。

我的数据字段是这样的:

col1:Email_ID - int

col2:file_name - varchar

col3:file_content - image

所以我的SQL select语句很简单:

Select file_name, file_content from Attachments where Email_ID = 333

之后我无法想出如何将它们附加到我的电子邮件中。

谢谢!

2 个答案:

答案 0 :(得分:3)

  SqlCommand cmdSelect=new SqlCommand("Select file_name, file_content " + 
              " from Attachments where Email_ID=@ID",this.sqlConnection1);
        cmdSelect.Parameters.Add("@ID",SqlDbType.Int,4);
        cmdSelect.Parameters["@ID"].Value=333;

DataTable dt = new DataTable();
        this.sqlConnection1.Open();
        SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = cmdSelect;
            sda.Fill(dt);
     if(dt.Rows.Count > 0)
{
        byte[] barrImg=(byte[])dt.Rows[0]["file_content"];
        string strfn= "Your File Directory Path" + Convert.ToString(dt.Rows[0]["file_name"]);
        FileStream fs=new FileStream(strfn, 
                          FileMode.CreateNew, FileAccess.Write);
        fs.Write(barrImg,0,barrImg.Length);
        fs.Flush();
        fs.Close();
   //now you can attache you file to email here your file is generate at path stored in "strfn" variable
}

参考文献:http://www.codeproject.com/KB/database/ImageSaveInDataBase.aspx

答案 1 :(得分:2)

从SQL获取图像,将其转换为流然后创建附件到您的电子邮件。 样品: Attachment(Stream,String)使用指定的流和名称初始化Attachment类的新实例。