2015-09-01 81 views
1

我有我的数据库中的数据,实际上是PDF文件如何读取二进制数据并作为附件发送?

command = " select pdffile from pdftable where ...." 

和我有下面的代码:

OracleDataReader reader = command.ExecuteReader(); 
      if (reader.Read() && !reader.IsDBNull(1)) 
      { 
       byte[] BytesData = (byte[])reader["BOOKC_ATTACHMENT"]; 
       Response.ContentType = "application/force-download"; 
       Response.AddHeader("content-disposition", 
            "attachment; filename=\"" + 
            Path.GetFileName((string)reader["BOOKC_ATTACHMENT_NAME"]) + "\""); 
       Response.AddHeader("Expires", "0"); 
       Response.BinaryWrite(BytesData); 
       Response.End(); 
      } 
      reader.Close(); 
      reader.Dispose(); 

它从数据库中读取数据,并从它创建一个PDF文件,然后提供它作为下载。

现在,我不想下载它,我想与SMTP发送到电子邮件地址:

MailMessage mm = new MailMessage(); 
      mm.Subject = strSubject; 
      mm.Body = strHtmlBody; 
      mm.From = "[email protected]"; 
      mm.To = "[email protected]"; 

    Attachment att = new Attachment(); 
      att. ???? 
      mm.Attachments.Add(att); 

SmtpClient smtp = new SmtpClient(); 
       smtp.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["msg_ben_from"], 
                 ConfigurationManager.AppSettings["msg_ben_pwd"]); 
       smtp.Send(mm); 

有人可以帮我解决这个问题吗?

回答

0

简单构造从byte []数组流,并将它传递到附接构造。 像:

// assuming byte[] BytesData = something at this point 
var att = new Attachment(new MemoryStream(BytesData, false), 
    "file.pdf", "application/pdf"); 
相关问题