【发布时间】:2014-09-28 00:12:39
【问题描述】:
所以我有一个发送电子邮件的功能,我在经过一些验证后在按钮单击事件中运行该电子邮件。但是,如何在发送电子邮件时发现任何错误?我熟悉 try-catch-finally 方法,那么底部的代码就足够了吗?
protected void sendEmail(string activationCode, string username, string emailAddress)
{
SmtpClient SmtpServer = new SmtpClient("smtp.live.com");
var mail = new MailMessage();
mail.From = new MailAddress("EMAIL");
mail.To.Add(emailAddress);
mail.Subject = "Please activate your account.";
mail.IsBodyHtml = true;
string htmlBody;
htmlBody = "Dear " + username + "<br /><br />";
htmlBody += "Thank you for registering an account. Please activate your account by visiting the URL below:<br /><br />";
htmlBody += "http://localhost:57167/signin.aspx?activate=" + activationCode + "<br /><br />";
htmlBody += "Thank you.";
mail.Body = htmlBody;
SmtpServer.Port = 587;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("EMAIL", "PASSWORD");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
这样可以吗?
protected void sendEmail(string activationCode, string username, string emailAddress)
{
try
{
SmtpClient SmtpServer = new SmtpClient("smtp.live.com");
var mail = new MailMessage();
mail.From = new MailAddress("EMAIL");
mail.To.Add(emailAddress);
mail.Subject = "Please activate your account.";
mail.IsBodyHtml = true;
string htmlBody;
htmlBody = "Dear " + username + "<br /><br />";
htmlBody += "Thank you for registering an account. Please activate your account by visiting the URL below:<br /><br />";
htmlBody += "http://localhost:57167/signin.aspx?activate=" + activationCode + "<br /><br />";
htmlBody += "Thank you.";
mail.Body = htmlBody;
SmtpServer.Port = 587;
SmtpServer.UseDefaultCredentials = false;
SmtpServer.Credentials = new System.Net.NetworkCredential("EMAIL", "PASSWORD");
SmtpServer.EnableSsl = true;
SmtpServer.Send(mail);
}
catch
{
lblError.Text = "error message";
}
}
}
【问题讨论】:
-
你不应该
try那么多代码,只把可能发生异常的代码放在try-catch块内。 -
我捕获了 SmtpException 和 Exception - 这似乎可以处理大多数出错的事情。
标签: c# asp.net email error-handling try-catch