export gridview data to
send mail as pdf with attachment in asp.net
In this article I will
explain export gridview to send mail as pdf with attachment in
asp.net
I created a table in Sql
server as shown
USE
[chinnu]
GO
/******
Object: Table [dbo].[EmployeeInfo] Script Date: 10/29/2013
02:35:17 ******/
SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
CREATE
TABLE
[dbo].[EmployeeInfo](
[EmpId]
[nvarchar](50)
NOT
NULL,
[EmpName]
[nvarchar](50)
NOT
NULL,
[EmpAddress]
[nvarchar](50)
NOT
NULL,
[EmpDesignation]
[nvarchar](50)
NOT
NULL
)
ON
[PRIMARY]
GO
I
Created a Empty solution with name GridViewMail and For that solution
I am creating a webform MailData.aspx
I
am designing the UI in MailData.aspx
<%@
Page
Language="C#"
AutoEventWireup="true"
CodeBehind="MailData.aspx.cs"
Inherits="GridViewMail.MailData"
%>
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head
runat="server">
<title></title>
</head>
<body>
<form
id="form1"
runat="server">
<div>
<asp:GridView
ID="gridview"
runat="server"
AutoGenerateColumns="False"
>
<Columns>
<asp:BoundField
DataField="EmpId"
HeaderText="EmployeeId"
InsertVisible="False"
/>
<asp:BoundField
DataField="EmpName"
HeaderText="EmployeeName"
InsertVisible="False"
/>
<asp:BoundField
DataField="EmpAddress"
HeaderText="EmployeeAddress"
/>
<asp:BoundField
DataField="EmpDesignation"
HeaderText="EmployeeDesignation"
/>
</Columns>
</asp:GridView>
<asp:ImageButton
runat
=
"server"
ImageUrl
="~/pdfmail.gif"
ToolTip
=
"Click
Here to Send Mail with PDF Format"
Width
=
"70"
Height
=
"55"
onclick="Emailbtn"
/>
</div>
</form>
</body>
</html>
Now
I am writing the logic for sending mail with pdf format with gridview
data.
In
References we have to add itextsharp DLL
In
MailData.aspx.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Data.SqlClient;
using
System.Configuration;
using
System.Data;
using
System.Net.Mail;
using
System.IO;
using
System.Text;
using
System.Web.UI.HtmlControls;
using
iTextSharp.text;
using
iTextSharp.text.html.simpleparser;
using
iTextSharp.text.pdf;
namespace
GridViewMail
{
public
partial
class
MailData
: System.Web.UI.Page
{
protected
void
Page_Load(object
sender, EventArgs
e)
{
if
(!IsPostBack)
{
BindGridData();
}
}
private
void
BindGridData()
{
try
{
using
(SqlConnection
con = new
SqlConnection(ConfigurationManager.ConnectionStrings["Connstring"].ConnectionString))
{
SqlCommand
command = new
SqlCommand("SELECT
* from EmployeeInfo",
con);
SqlDataAdapter
da = new
SqlDataAdapter(command);
DataTable
dt = new
DataTable();
da.Fill(dt);
gridview.DataSource
= dt;
gridview.DataBind();
}
}
catch
(Exception
ex)
{
}
}
protected
void
Emailbtn(object
sender, ImageClickEventArgs
e)
{
StringWriter
sw = new
StringWriter();
HtmlTextWriter
htw = new
HtmlTextWriter(sw);
gridview.RenderControl(htw);
StringReader
sr = new
StringReader(sw.ToString());
Document
pdfDoc = new
Document(PageSize.A4,
10f, 10f, 10f, 0f);
HTMLWorker
htmlparser = new
HTMLWorker(pdfDoc);
MemoryStream
ms = new
MemoryStream();
PdfWriter.GetInstance(pdfDoc,
ms);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
byte[]
bytes = ms.ToArray();
MailMessage
mailmess = new
MailMessage();
mailmess.From
= new
MailAddress("jlakshmitulasi@gmail.com");
mailmess.To.Add(new
MailAddress("jlakshmitulasi@gmail.com"));
mailmess.Subject
= "Employee
Information";
mailmess.Body
= "Please
find the attached pdf document ";
mailmess.Attachments.Add(new
Attachment(new
MemoryStream(bytes),"EmployeeInformation.PDF"));
mailmess.IsBodyHtml
= true;
SmtpClient
sc = new
SmtpClient();
sc.Host
= "smtp.gmail.com";
sc.Port
= 587;
sc.Credentials
= new
System.Net.NetworkCredential("username",
"password");
sc.EnableSsl
= true;
sc.Send(mailmess);
}
In
web.config I am adding the ConnectionString
<connectionStrings>
<add
name="Connstring"
connectionString="Data
Source=DotNetSharePoint;Database=Chinnu;User
Id=sa;Password=password123;"
providerName="System.Data.SqlClient"
/>
</connectionStrings>
public
override
void
VerifyRenderingInServerForm(Control
control)
{
/*
Verifies that the control is rendered */
}
}
}
Now
Press F5,We can see Out Put: