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
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