Hi makumbi,
Check the below example.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server" />
<asp:HiddenField ID="hfId" runat="server" Value='<%#Eval("Id") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="Name" />
</Columns>
</asp:GridView>
<asp:Button ID="btnSend" Text="Send Email" runat="server" OnClick="OnSendEmail" />
Namespaces
C#
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using System.Net.Mail;
VB.Net
Imports System.Configuration
Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
Imports System.Net
Imports System.Net.Mail
Code
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Id"), new DataColumn("Name") });
dt.Rows.Add(1, "John");
dt.Rows.Add(2, "Jackson");
dt.Rows.Add(3, "Andrew");
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
protected void OnSendEmail(object sender, EventArgs e)
{
MailMessage mm = new MailMessage("sender@gmail.com", "receiver@gmail.com");
mm.Subject = "Test Subject";
mm.Body = "Test Body";
mm.IsBodyHtml = true;
foreach (GridViewRow row in GridView1.Rows)
{
CheckBox chkSelect = (CheckBox)row.FindControl("chkSelect");
if (chkSelect.Checked)
{
string id = ((HiddenField)row.FindControl("hfId")).Value;
string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "SELECT Name, Data FROM tblFiles WHERE id = @Id";
cmd.Connection = con;
cmd.Parameters.AddWithValue("@Id", id);
using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
{
DataTable dt = new DataTable();
sda.Fill(dt);
byte[] bytes = (byte[])dt.Rows[0]["Data"];
string name = dt.Rows[0]["Name"].ToString();
mm.Attachments.Add(new Attachment(new MemoryStream(bytes), name));
}
}
}
}
}
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential();
NetworkCred.UserName = "sender@gmail.com";
NetworkCred.Password = "password";
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
}
VB.Net
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim dt As DataTable = New DataTable()
dt.Columns.AddRange(New DataColumn(1) {New DataColumn("Id"), New DataColumn("Name")})
dt.Rows.Add(1, "John")
dt.Rows.Add(2, "Jackson")
dt.Rows.Add(3, "Andrew")
GridView1.DataSource = dt
GridView1.DataBind()
End If
End Sub
Protected Sub OnSendEmail(ByVal sender As Object, ByVal e As EventArgs)
Dim mm As MailMessage = New MailMessage("sender@gmail.com", "receiver@gmail.com")
mm.Subject = "Test Subject"
mm.Body = "Test Body"
mm.IsBodyHtml = True
For Each row As GridViewRow In GridView1.Rows
Dim chkSelect As CheckBox = CType(row.FindControl("chkSelect"), CheckBox)
If chkSelect.Checked Then
Dim id As String = (CType(row.FindControl("hfId"), HiddenField)).Value
Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
Using con As SqlConnection = New SqlConnection(constr)
Using cmd As SqlCommand = New SqlCommand()
cmd.CommandText = "SELECT Name, Data FROM tblFiles WHERE id = @Id"
cmd.Connection = con
cmd.Parameters.AddWithValue("@Id", id)
Using sda As SqlDataAdapter = New SqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable()
sda.Fill(dt)
Dim bytes As Byte() = CType(dt.Rows(0)("Data"), Byte())
Dim name As String = dt.Rows(0)("Name").ToString()
mm.Attachments.Add(New Attachment(New MemoryStream(bytes), name))
End Using
End Using
End Using
End If
Next
Dim smtp As SmtpClient = New SmtpClient()
smtp.Host = "smtp.gmail.com"
smtp.EnableSsl = True
Dim NetworkCred As NetworkCredential = New NetworkCredential()
NetworkCred.UserName = "sender@gmail.com"
NetworkCred.Password = "password"
smtp.UseDefaultCredentials = True
smtp.Credentials = NetworkCred
smtp.Port = 587
smtp.Send(mm)
End Sub