2012-07-03 3 views
-2
using (MemoryStream stream = new MemoryStream()) 
      { 
       compositeLink.PrintingSystem.ExportToPdf(stream); 
       Response.Clear(); 
       Response.Buffer = false; 
       Response.AppendHeader("Content-Type", "application/pdf"); 
       Response.AppendHeader("Content-Transfer-Encoding", "binary"); 
       Response.AppendHeader("Content-Disposition", "attachment; filename=test.pdf"); 
       Response.BinaryWrite(stream.GetBuffer()); 
       Response.End(); 


      } 

나는 잘 작동한다.메일 첨부 파일로서의 응답

message.Attachments.Add(Response.BinaryWrite(stream.GetBuffer())); 

어떤 도움이 방법이 작업을 얻을 : 다음 단계는 내가이 라인에 문제가 부착

using (MemoryStream stream = new MemoryStream()) 
      { 
       compositeLink.PrintingSystem.ExportToPdf(stream); 
       Response.Clear(); 
       Response.Buffer = false; 
       Response.AppendHeader("Content-Type", "application/pdf"); 
       Response.AppendHeader("Content-Transfer-Encoding", "binary"); 
       Response.AppendHeader("Content-Disposition", "attachment; filename=test.pdf"); 
       Response.BinaryWrite(stream.GetBuffer()); 




       System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
       message.To.Add("[email protected]"); 
       message.Subject = "Subject"; 
       message.From = new System.Net.Mail.MailAddress("[email protected]"); 
       message.Body = "Body"; 
       message.Attachments.Add(Response.BinaryWrite(stream.GetBuffer())); 
       System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("192.168.100.100"); 
       smtp.Send(message); 

       Response.End(); 

     } 

로, 메일이 PDF 파일을 전송하는 것입니다? 감사합니다

답변

2

Response.BinaryWrite는 스트림의 내용을 가져 와서 응답에 씁니다. 너는 그걸 원하지 않아.

대신 새 Attachment 개체를 만들어 message.Attachments에 추가해야합니다.

이 시도 :

var ct = new ContentType(); 
ct.MediaType = MediaTypeNames.Application.Pdf; 
ct.Name = "test.pdf"; 
message.Attachments.Add(new Attachment(stream, ct)); 

당신은 더 많은 예제 코드 here를 찾을 수 있습니다.

0

Response.BinaryWrite 메서드는 void을 반환합니다. 즉, 아무 것도 전달하지 않고 Add 메서드에 전달합니다.

당신이해야 할 일은 스트림을 직접 사용하여 Attachment 인스턴스를 만들어 메시지 컬렉션에 추가하는 것입니다.

message.Attachments.Add(new Attachment(stream, "file.pdf")); 

첨부 파일이있는 메일을 보내는의 전체 예제는 MSDN here에서 찾을 수 있습니다 : 그것은 같이 보일 것입니다. 희망이 도움이됩니다.

2

다음과 같이 시도해보십시오.

message.Attachments.Add(New Attachment(stream, "test.pdf", "application/pdf"))