try-catch-block verwendet, während smtp Ausnahme müssen zur Anzeige einer Fehlermeldung auf dem lokalen server
Catch-block wird immer dann verwendet, wenn es gibt eine Ausnahme aus, während mit smtp
- Anschluss,aber es wirft Ausnahme, das ist gut,it will take a very long time
und auch die Ausnahme Nachricht wird direkt gezeigt, in den code selbst,Voraussetzung ist die Anzeige eine Fehlermeldung während der Ausführung in der localserver
und sollten nicht kommen, um den code. Es sollte throw exception
wenn die server
unten ist, oder invalid email Id
oder eine änderung in der smtp port
Schlussfolgerung ist, sollte die Fehlermeldung nicht kommen direkt auf den code.Es sollte eine Fehlermeldung angezeigt, und beenden Sie den application
sollte nicht hang
.
protected void Button2_Click(object sender, EventArgs e)
{
//string vv;
//vv = (string)Session["FID"];
DateTime sdt = DateTime.Today;
SqlCommand cmd4 = new SqlCommand();
int flag=0;
String test = DateTime.Now.ToString("dd.MM.yyy");
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
string toemail = GridView1.Rows[i].Cells[2].Text;
string FID1 = GridView1.Rows[i].Cells[0].Text;
GridViewRow row = GridView1.Rows[i];
CheckBox Ckbox = (CheckBox)row.FindControl("CheckBoxMark1");
if (Ckbox.Checked == true)
{
sendMail(toemail);
flag = 1;
//ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Email send Succesfully')</script>");
}
if (flag == 1)
{
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Email sent on " + test + "')</script>");
cn.Open();
//cmd4.CommandText = "Insert into TrackingFaculty_det (EmailsentDate) values (@EmailsentDate) WHERE FID=@FID";
cmd4.CommandText = "update TrackingFaculty_det SET EmailsentDate=@Email WHERE FID=@FID ";
cmd4.CommandType = CommandType.Text;
cmd4.Connection = cn;
cmd4.Parameters.Clear();
cmd4.Parameters.Add("@Email", SqlDbType.DateTime, 8);
cmd4.Parameters["@Email"].Value = sdt;
cmd4.Parameters.Add("@FID", SqlDbType.VarChar, 10);
cmd4.Parameters["@FID"].Value = FID1;
cmd4.ExecuteNonQuery();
cn.Close();
log.Debug("Info : Insert the Email Sent Date of the faculty");
}
else
{
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Email cannot be sent')</script>");
}
}
log.Debug("Info : Function used to send mail");
}
public void sendMail(String toemail)
{
try
{
MailMessage mail = new MailMessage();
mail.To.Add(toemail);
mail.From = new MailAddress("[email protected]");
mail.Subject = "Remember Mail";
//string Body = "Please update profile";
//mail.Body = Body;
mail.Body = " Dear Sir/Madam \n\n\n Please update your profile. . \n\n\n Thanks & Regards \n\n\n MCIS,Manipal.";
//mail.Body = "<html><body> <h2" + "align=center>Dear Sir/Madam" + "</h2> Please update ur profile</body></html>";
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 584;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "manipal15");
smtp.EnableSsl = true;
smtp.Send(mail);
}
catch (SmtpException ex)
{
string msg = "Mail cannot be sent:";
msg += ex.Message;
log.Debug("Error: Inside catch block of Mail sending");
log.Error("Error msg:" + ex);
log.Error("Stack trace:" + ex.StackTrace);
throw new Exception(msg);
}
Diese auch arrises mit einem anderen Problem, das, Wann immer es betritt for
Schleife, deren Ausführung
send(tomail)
funktioniert, auch wenn es ungültig ist, zusammen mit diesem ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('Email sent on " + test + "')</script>");
Linie wird auch ausgeführt bei jeder Instanz.ich diese Arbeit zu machen brauchen Sie nur, wenn valid EmailID
und richtige smtp port
verfügbar ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie diese Zeilen von code es funktionieren wird
Die Zeit, die es braucht, ist die Zeit, die es braucht, um zu "verstehen", dass etwas nicht ok ist (tehre könnte verschiedene Ursachen, smtp schlägt fehl, natürlich) .
In der Sie konkrete code sehe ich, dass Sie re - raise eine Ausnahme, die nach Ihren Anforderungen ist nicht, was Sie wollen, so probabbly bessere Lösung sein könnte:
Für die client-Seite-Meldung, die Sie verwenden können, was Sie wollen. Es gibt verschiedene Bibliotheken für die:
und so weiter ...
Wenn dieses nicht ist, was Sie für Fragen bitte klären.
MessageBox
im inneren fangen, ich denke, es wird sich zeigenThe name MessageBox
doesnot exixts im aktuellen content`Response.Writeline(msg);
stattSendAsyncMessage(msg);