2017-10-17 144 views
0

我有一封電子郵件作爲收據發送給付款。該電子郵件包含一個包含所有信息的HTML表格。它將該表格寫爲電子郵件的主體。將html錶轉換爲.pdf並使用.Net郵件類發送電子郵件「smtp」

  protected void btnSendEmail_Click(object sender, EventArgs e) 
     { 
      var stringWrite = new StringWriter(); 
      var htmlWrite = new HtmlTextWriter(stringWrite); 
      Table1.RenderControl(htmlWrite); 
string sBody = stringWrite.ToString(); 
    } 

所以電子郵件的正文是收據。我想將該電子郵件中的HTML表格與其中的所有值一起轉換爲pdf並作爲附件發送。請讓我知道如果你知道如何。謝謝

回答

0

使用.Net庫hiqpdf(您可以從nuget安裝它:https://www.nuget.org/packages/hiqpdf/)。它可以從您提供給它的HTML中生成pdf。 然後使用由該方法返回的字節數組,並將其與包含名稱.pdf擴展添加作爲附件:

Attachment att = new Attachment(new MemoryStream(bytes), name);

+0

不,如果我添加任何Nuget包,它會破壞導致錯誤的Web.Config任何其他方法? –

+0

爲什麼不下載dll然​​後引用它? –

+0

我找到了一個更好的方法。感謝您的回覆,我會發布,所以你也可以知道如何。謝謝 –

0

所以,我發現這樣做這樣的一種方式。拿起我離開的地方。

string sBody = stringWrite.ToString(); 
    StringReader sr = new StringReader(stringWrite.ToString()); 
     Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 

當我們發送電子郵件

 msg.Subject = sSubject; 

     msg.Body = sBody; 

     msg.IsBodyHtml = true; 

     var smpt = new SmtpClient(); 
     smpt.Port = ###; 
     using (MemoryStream memoryStream = new MemoryStream()) 
     { 
      PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream); 
      pdfDoc.Open(); 
      htmlparser.Parse(sr); 
      pdfDoc.Close(); 
      byte[] bytes = memoryStream.ToArray(); 
      memoryStream.Close(); 
      msg.Attachments.Add(new Attachment(new MemoryStream(bytes), "RECEIPT.pdf")); 
      smpt.DeliveryMethod = SmtpDeliveryMethod.Network; 
smpt.Send(msg); 

很簡單,你需要iTextSharp的這這一切都和它有一個會寫吧,並在電子郵件中發送一個pdfwriter選項。感謝您的觀看。 Credit to this POST