I would recommend you to get all the records in the GridView and using for each loop send the Email to all 250 users. After send all the mails you can set the text in the Label as Email has been sent to all users.
You can refer this link.
Send email to all users which the checkbox is checked in ASP.Net GridView
Remove the Checkbox from the GridView as you will not require that.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Email" HeaderText="Email" />
</Columns>
</asp:GridView>
<asp:Button ID="Button1" runat="server" Text="Send Email" OnClick="SendEmail" />
<asp:Label ID="lblStatus" runat="server" />
Remove Checkbox cheked condition from Button OnClick event.
protected void SendEmail(object sender, EventArgs e)
{
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
string name = row.Cells[1].Text;
string email = row.Cells[2].Text;
MailMessage mail = new MailMessage();
mail.To.Add(email);
mail.From = new MailAddress("sender@gmail.com");
mail.Subject = "Shipping Details";
mail.Body = string.Format("Hello {0}, <br />This is a test email.<br />Thanks", name);
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Credentials = new System.Net.NetworkCredential("sender@gmail.com", "senderpass");
smtp.EnableSsl = true;
smtp.Port = 587;
smtp.Send(mail);
}
}
}