Introduction: In previous articles i explained How to send emails in asp.net using Gmail and How to send emails in asp.net | How to set Smtp setting in web.config file to send email in asp.net and Send emails in asp.net using Gmail | How to set Smtp setting in web.config file to send emails in asp.net using Gmail in asp.net and Delete multiple records from asp.net gridview with checkbox selection and Show tool tip message using CSS and HTML and Highlight gridview row on mouse over using CSS and How to get CheckBoxList selected items in comma separated format in asp.net(C#,VB) and Fill CheckBoxList based on DropDownList selection in asp.net(C#, VB).
In this article I am going to explain with example How to send mail to multiple users based on CheckBox selection inside GridView. I have also implemented the Select/Unselect all CheckBoxes inside GridView in this article.
Implementation: Let;s create a sample application to see it in action.
Note: Replace the Data Source and the Initial Catalog(i.e. Database Name) as per your application.
In this article I am going to explain with example How to send mail to multiple users based on CheckBox selection inside GridView. I have also implemented the Select/Unselect all CheckBoxes inside GridView in this article.
click on image to enlarge |
Click on image to enlarge
Note: EMP_ID column is set to Primary
key and Identity specification is set to yes with Identity increment and
Identity seed equal to 1. Insert some data in this table that you want to
show in the Gridview.
- Now in web.config file add the connection string under <configuration> tag as:
<connectionStrings>
<add name="conStr" connectionString="Data Source=LALIT;Initial Catalog=MyDataBase;Integrated
Security=True"/>
</connectionStrings>
Note: Replace the Data Source and the Initial Catalog(i.e. Database Name) as per your application.
- Add a GridView and a Button control in design page of your asp.net website under <BODY> tag
<fieldset style="width:515px;">
<legend>Send Mail to multiple users based on CheckBox
Selection inside GridView in asp.net</legend>
<table>
<tr>
<td>
<asp:GridView ID="grEmp" runat="server" AllowPaging="True" AutoGenerateColumns="False"
DataKeyNames="EMP_ID" GridLines="None" Width="100%" CellPadding="4" ForeColor="#333333">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="EMP_ID" HeaderText="EMP_ID" Visible="False" />
<asp:BoundField DataField="EMP_NAME" HeaderText="Emp Name" />
<asp:BoundField DataField="DEPT" HeaderText="Department" />
<asp:BoundField DataField="SALARY" HeaderText="salary" />
<asp:BoundField DataField="EMAIL_ID" HeaderText="Email Id" />
<asp:TemplateField HeaderText="CheckAll">
<HeaderTemplate>
<asp:CheckBox ID="chkSelectAll" runat="server"
AutoPostBack="true"
OnCheckedChanged="chkSelectAll_CheckedChanged"/>Send Mail To All ?
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="chkSelect" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
</td>
</tr>
</table>
<asp:Button ID="btnSendMail" runat="server" Text="Send Email" OnClick="btnSendMail_Click" />
</fieldset>
C#.Net Code to send emails to multiple users
First include the following namespaces
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Net;
using
System.Net.Mail;
then write the code as:
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conStr"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindEmpGrid();
}
}
protected void BindEmpGrid()
{
SqlCommand cmd = new SqlCommand("select * from
EMPLOYEE", con);
DataTable dt = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter(cmd);
adp.Fill(dt);
grEmp.DataSource = dt;
grEmp.DataBind();
}
protected void btnSendMail_Click(object sender, EventArgs e)
{
string empId = string.Empty;
DataTable dt = new DataTable();
try
{
foreach (GridViewRow row in grEmp.Rows)
{
CheckBox cb = (CheckBox)row.FindControl("chkSelect");
if (cb.Checked == true)
{
if (cb != null && cb.Checked)
{
//get Current EMAIL_ID from the DataKey
empId = Convert.ToString(grEmp.DataKeys[row.RowIndex].Value);
SqlCommand cmd = new SqlCommand("select EMAIL_ID from EMPLOYEE where
EMP_ID=" + empId + "", con);
SqlDataAdapter adp = new SqlDataAdapter(cmd);
//Fill datatable with EMAIL_ID corresponding to
Current EMP_ID
adp.Fill(dt);
//Get EMAIL_ID into variable
string emailId = dt.Rows[0]["EMAIL_ID"].ToString();
//write code to send mail
SendEmailUsingGmail(emailId);
dt.Clear();
dt.Dispose();
}
}
}
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), Guid.NewGuid().ToString(), "alert('Emails sent successfully');", true);
}
catch (Exception ex)
{
Response.Write("Error occured: " + ex.Message.ToString());
}
finally
{
empId = string.Empty;
}
}
private void SendEmailUsingGmail(string toEmailAddress)
{
try
{
SmtpClient smtp = new SmtpClient();
smtp.Credentials = new NetworkCredential("YourGmailEmailID", "YourGmailPassword");
smtp.Port = 587;
smtp.Host = "smtp.gmail.com";
smtp.EnableSsl = true;
MailMessage message = new MailMessage();
message.From = new MailAddress("YourGmailEmailID");
message.To.Add(toEmailAddress);
message.Subject = "Write your email subject here";
message.Body = "write the content of the email here";
smtp.Send(message);
}
catch(Exception ex)
{
Response.Write("Error occured: " + ex.Message.ToString());
}
}
protected void chkSelectAll_CheckedChanged(object sender, EventArgs e)
{
CheckBox chkAll =
(CheckBox)grEmp.HeaderRow.FindControl("chkSelectAll");
if (chkAll.Checked == true)
{
foreach (GridViewRow gvRow in grEmp.Rows)
{
CheckBox chkSel =
(CheckBox)gvRow.FindControl("chkSelect");
chkSel.Checked = true;
}
}
else
{
foreach (GridViewRow gvRow in grEmp.Rows)
{
CheckBox chkSel = (CheckBox)gvRow.FindControl("chkSelect");
chkSel.Checked = false;
}
}
}
VB.Net Code to send emails to multiple users
First import the following
namespaces:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Configuration
Imports System.Net
Imports System.Net.Mail
Then write the code as:
Dim con As New SqlConnection(ConfigurationManager.ConnectionStrings("conStr").ConnectionString)
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
BindEmpGrid()
End If
End Sub
Protected Sub BindEmpGrid()
Dim cmd As New SqlCommand("select * from
EMPLOYEE", con)
Dim dt As New DataTable()
Dim adp As New SqlDataAdapter(cmd)
adp.Fill(dt)
grEmp.DataSource = dt
grEmp.DataBind()
End Sub
Protected Sub btnSendMail_Click(sender As Object, e As EventArgs)
Dim empId As String = String.Empty
Dim dt As New DataTable()
Try
For Each row As GridViewRow In grEmp.Rows
Dim cb As CheckBox = DirectCast(row.FindControl("chkSelect"), CheckBox)
If cb.Checked = True Then
If cb IsNot Nothing AndAlso cb.Checked Then
'get Current EMAIL_ID from the DataKey
empId = Convert.ToString(grEmp.DataKeys(row.RowIndex).Value)
Dim cmd As New SqlCommand("select EMAIL_ID from EMPLOYEE where
EMP_ID=" & empId & "", con)
Dim adp As New SqlDataAdapter(cmd)
'Fill datatable with EMAIL_ID corresponding to Current
EMP_ID
adp.Fill(dt)
'Get EMAIL_ID into variable
Dim emailId As String = dt.Rows(0)("EMAIL_ID").ToString()
'write code to send mail
SendEmailUsingGmail(emailId)
dt.Clear()
dt.Dispose()
End If
End If
Next
ScriptManager.RegisterClientScriptBlock(Page, Page.[GetType](), Guid.NewGuid().ToString(), "alert('Emails sent successfully');", True)
Catch ex As Exception
Response.Write("Error occured: " & ex.Message.ToString())
Finally
empId = String.Empty
End Try
End Sub
Private Sub SendEmailUsingGmail(toEmailAddress As String)
Try
Dim smtp As New SmtpClient()
smtp.Credentials = New NetworkCredential("YourGmailEmailID", " YourGmailPassword")
smtp.Port = 587
smtp.Host = "smtp.gmail.com"
smtp.EnableSsl = True
Dim message As New MailMessage()
message.From = New MailAddress("YourGmailEmailID")
message.[To].Add(toEmailAddress)
message.Subject = "Write your email subject here"
message.Body = "write the content of the email here"
smtp.Send(message)
Catch ex As Exception
Response.Write("Error occured: " & ex.Message.ToString())
End Try
End Sub
Protected Sub chkSelectAll_CheckedChanged(sender As Object, e As EventArgs)
Dim chkAll As CheckBox = DirectCast(grEmp.HeaderRow.FindControl("chkSelectAll"), CheckBox)
If chkAll.Checked = True Then
For Each gvRow As GridViewRow In grEmp.Rows
Dim chkSel As CheckBox = DirectCast(gvRow.FindControl("chkSelect"), CheckBox)
chkSel.Checked = True
Next
Else
For Each gvRow As GridViewRow In grEmp.Rows
Dim chkSel As CheckBox = DirectCast(gvRow.FindControl("chkSelect"), CheckBox)
chkSel.Checked = False
Next
End If
End Sub
End Class
Now over to you:
"If you like my work; you can appreciate by leaving your comments,
hitting Facebook like button, following on Google+, Twitter, Linked in and
Pinterest, stumbling my posts on stumble upon and subscribing for receiving
free updates directly to your inbox . Stay tuned and stay connected for more
technical updates."
21 comments
Click here for commentsvery nice article...thank you and keep posting..
ReplySir..can you please send a complete tutorial starting from basic for WCF..
I would be thakfull
very nice article...thank you and keep posting..
ReplySir..can you please send a complete tutorial starting from basic for WCF..
I would be thakfull
Thanks for the appreciation..
ReplyRead the below articles to have the knowledge on wcf services
How to create and consume WCF Services in asp.net ?
http://www.webcodeexpert.com/2013/04/how-to-create-and-consume-wcf-services.html
&
WCF Service to bind,insert,edit,update,delete from sql server database in asp.net C#
http://www.webcodeexpert.com/2013/08/wcf-service-to-bindinserteditupdatedele.html
How to create and consume WCF Services in asp.net ?
Replyhttp://www.webcodeexpert.com/2013/04/how-to-create-and-consume-wcf-services.html
&
WCF Service to bind,insert,edit,update,delete from sql server database in asp.net C#
http://www.webcodeexpert.com/2013/08/wcf-service-to-bindinserteditupdatedele.html
very nice post.
Replystay tuned and stay connected for more updates..
Replydear sir i m the new user in the development world
Replyplz provide me the best way to i starting my development
thanks
Hi king..you can learn online or join any training institute..obviously keep reading my blog and you will learn more and more...:)
Replydear sir i added u in google plus also plz can u me some basic notes with example with written in ur language thanks
ReplyError occured: The multi-part identifier "email id where sending email" could not be bound.
ReplyPlease find the error.
Hello Ankit..i think your are missing something i n your code..so i suggest you to recheck your code and try once more..if still you face error then let me know..i will help you to sort out the error..
Replycheck and match for the sql queries with this articles too..
Replynot working
Replyits not working
ReplyHello Anand Bajpai..what problem your are facing? Please mentioned the exact error/exception that your are facing?
Replysir i am try to send email but error is :-Error occured: The specified string is not in the form required for an e-mail address. pls help me
ReplyHello Arjun Walmiki..please check your email address format..if still you are facing problem then let me know..i will help you..
ReplyWhere can i compose the message to send in their Email?
ReplyThank you so much
ReplyIt worked for me :)
Replyvery help full . one more thing , how to send data from database through email.
ReplyIf you have any question about any post, Feel free to ask.You can simply drop a comment below post or contact via Contact Us form. Your feedback and suggestions will be highly appreciated. Also try to leave comments from your account not from the anonymous account so that i can respond to you easily..