2011-11-25 2 views
0

문자열을 허용하고 해당 문자열을 기반으로 전자 메일 첨부 파일을 생성하는 함수가 있습니다. 그것은 HTML 페이지, 텍스트 문서 등에 대해 잘 작동하지만 PDF 파일을 생성 할 수는 없습니다.메모리 스트림을 사용하여 system.net.mail.attachment로 PDF 파일 생성

코드 :

Public Sub SendMail _ 
(_ 
ByVal strFrom As String _ 
, ByVal strTo As String _ 
, ByVal strSubject As String, ByVal strBody As String _ 
, Optional ByVal attachment As String = "" _ 
, Optional ByVal filename As String = "Attachment.HTML" _ 
) 

    Dim sendMail As New SmtpClient 
    Dim mail As New MailMessage(strFrom, strTo) 
    Dim userToken As New Object 


     mail.Subject = strSubject 
     mail.Body = strBody 

     mail.IsBodyHtml = True 


     Using MemoryStream = New MemoryStream 

      If attachment.Length <> 0 Then 
         Dim data As Byte() = Encoding.ASCII.GetBytes(attachment) 
         MemoryStream.Write(data, 0, data.Length) 
         MemoryStream.Seek(0, SeekOrigin.Begin) 
         MemoryStream.Position = 0 

         Dim content As New ContentType() 
         content.MediaType = MediaTypeNames.Application.Octet 
         content.Name = filename 

         Dim newAttach As New Attachment(MemoryStream, content) 
         mail.Attachments.Add(newAttach) 
      End If 


      sendMail.DeliveryMethod = SmtpDeliveryMethod.Network 
      sendMail.Host = "SERVER" 
      sendMail.UseDefaultCredentials = False 
      sendMail.Credentials = New System.Net.NetworkCredential("UN", "PW") 

      sendMail.Send(mail) 


     End Using 

난 내가 제대로 인코딩되지 않았 음 오류를 얻을 Whatever.PDF 등의 첨부 파일을 저장합니다. 내가 PDF로이 작업을하기 위해해야 ​​할 일이 무엇인지 확신하지 못하고, Google 검색을 시도했지만 저를 돕는 것을 찾지 못했습니다.

EDITED :

I

dim pdf as new datadynamics.activereports.export.pdf.pdfexport 
sendmail("[email protected]", "[email protected]", "test", "test", pdf.tostring, "pdf.pdf") 

내가 문제는 내가 변환하려고 다음 문자열로 PDF를 변환하고,하고 생각합니다 PDF를 생성하는 활성 보고서의 PDF 수출 datadynamics을 사용하고 있습니다 PDF로 돌아가 전자 메일에 첨부하지만 100 % 확실하지는 않습니다.

감사합니다.

+0

문자열에서 PDF 파일을 생성하기 위해 어떤 라이브러리를 사용합니까? 이 작업을 수행 할 수있는 .NET 프레임 워크에는 내장 된 것이 없습니다. –

+0

원본 질문을 라이브러리로 편집했습니다. 나는 데이터 다이내믹 activereports를 사용하고 있습니다. 감사. – Jeff

+1

첨부 파일에서 PDF 파일의 내용을 게시/링크 할 수 있습니까? – MagnatLU

답변

1

나는이보고 기술에 익숙하지 않은 해요,하지만 documentation에 따라이 같은 것을 사용해야합니다

DataDynamics.ActiveReports.Export.Pdf.PdfExport p = new DataDynamics.ActiveReports.Export.Pdf.PdfExport(); 
string tmp = Path.GetTempFileName(); 
p.Export(rpt.Document, tmp, "1-10000"); 
byte[] pdf = File.ReadAllBytes(tmp); 
File.Delete(tmp); 

pdf 배열에서 MemoryStream을 만들거나 tmp 파일에서 첨부 파일을 추가 할 수 있습니다.

+0

알았어요. 당신의 도움을 주셔서 감사합니다! – Jeff

관련 문제