How To Email PDF using Asp.net(API)

                                 How  To Email PDF  using Asp.net(API)


             To Email the data in mail First we need to add a class and a controller in Our Project .

             Lets See my Controller

       

          [HttpPost]
        [ActionName("ESalarySlip")]
        public dynamic EmailSalarySlip(SP_SalarySlip  salarySlip)
        {

            SalarySlipPDFconvertorEmail mail = new SalarySlipPDFconvertorEmail ();


            dynamic Data=  mail.SendEmail(salarySlip.Email,

                salarySlip.BasicSalary,
                salarySlip.Bonus,
                salarySlip.CompanyAddress,
                salarySlip.CompanyName,
                salarySlip.TDS,
         );



            return Data;

        }



This is  my class in which I have sent data from controller to this class SalarySlipPDFconvertorEmail .Lets See How




  using iTextSharp.text;
  using iTextSharp.text.html.simpleparser;
  using iTextSharp.text.pdf;
  using System;
  using System.Collections.Generic;
  using System.Data;
  using System.IO;
  using System.Linq;
  using System.Net;
  using System.Net.Mail;
  using System.Reflection.Metadata;
  using System.Text;
  using System.Threading;
  using System.Threading.Tasks;
  using Document = iTextSharp.text.Document;

 namespace LMSApiSol.Models

 {
    public class SalarySlipPDFconvertorEmail
    {


        public bool SendEmail(string Email,

            decimal BasicSalary,
            decimal Bonus,
            string CompanyAddress,
            string CompanyName,
             string TDS,


           )

        {

            DataTable dt = new DataTable();

         

            dt.Columns.AddRange(new DataColumn[4] {

                                new DataColumn("Earnings"),
                                new DataColumn("Total "),
                                new DataColumn("Deduction"),
              new DataColumn("Total")});


            dt.Rows.Add("BasicSalary", BasicSalary, "Tax Deducted at Source(T.D.S)", TDS);

      
            using (StringWriter sw = new StringWriter())
            {
             
             
                StringBuilder sb = new StringBuilder();
                sb.Append("<table width='100%' cellspacing='0' cellpadding='2'>");
                sb.Append("<tr><td align='center' style='background-color: #18B5F0' colspan =     '2'><b>Salary Slip</b></td></tr>");
                sb.Append("<tr><td colspan = '2'></td></tr>");

          

                sb.Append("<tr><td colspan = '2'><b>Company Name : </b> ");
                sb.Append(CompanyName);

                sb.Append("<tr><td colspan = '2'><b>Company Address : </b> ");

                sb.Append(CompanyAddress);

                sb.Append("</td><td><b>Date: </b>");

                sb.Append(DateTime.Now);

                sb.Append("<div></div></ br >");


                sb.Append("< label > <b>Leave:</b></ label >");

                sb.Append(Leave);

                sb.Append(" </td></tr>");

             
                sb.Append("</td></tr>");
                sb.Append("</table>");
                sb.Append("<br />");
                sb.Append("<table border = '1'>");
                sb.Append("<tr>");
                foreach (DataColumn column in dt.Columns)
                {
                    sb.Append("<th>");
                    sb.Append(column.ColumnName);
                    sb.Append("</th>");
                }
                sb.Append("</tr>");

                foreach (DataRow row in dt.Rows)

                {
                    sb.Append("<tr>");
                    foreach (DataColumn column in dt.Columns)
                    {
                        sb.Append("<td >");
                        sb.Append(row[column]);
                        sb.Append("</td>");
                    }
                    sb.Append("</tr>");
                }
                sb.Append("</table>");

                




                StringReader sr = new StringReader(sb.ToString());


                Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);

                HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
                using (MemoryStream memoryStream = new MemoryStream())
                {
                    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
                    pdfDoc.Open();
                    htmlparser.Parse(sr);
                    pdfDoc.Close();
                    byte[] bytes = memoryStream.ToArray();
                    memoryStream.Close();

                    MailMessage mm = new MailMessage("from@gmail",                "To@gmail");

                    mm.Subject = "SalarySlip PDF";
                    mm.Body = "Salaryslip from " + CompanyName;
                    mm.Attachments.Add(new Attachment(new MemoryStream(bytes),              EmployeeName+"Salary.pdf"));
                    mm.IsBodyHtml = true;
                    SmtpClient smtp = new SmtpClient();
                    smtp.Host = "smtp.gmail.com";
                    smtp.EnableSsl = true;
                    NetworkCredential NetworkCred = new NetworkCredential();
                    NetworkCred.UserName = "from@gmail.com";
                    NetworkCred.Password = "<fromEmailpassword>";
                    smtp.UseDefaultCredentials = true;
                    smtp.Credentials = NetworkCred;
                    smtp.Port = 587;
                      smtp.Send(mm);
           

                }


            }

        }


    }

 
    }


    Here on this  you have to use install iTextSharp plugin.
   You can append whatever value required  in the  table of the PDF


No comments:

Post a Comment