2012-09-27 3 views
-1
public partial class ForgotPassword : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
    protected void btnPass_Click(object sender, EventArgs e) 
    { 
     //Create Connection String And SQL Statement 
     string strConnection = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
     string strSelect = "SELECT UserName,Password FROM Users WHERE Email = @Email"; 

     SqlConnection connection = new SqlConnection(strConnection); 
     SqlCommand command = new SqlCommand(); 
     command.Connection = connection; 
     command.CommandType = CommandType.Text; 
     command.CommandText = strSelect; 

     SqlParameter email = new SqlParameter("@Email", SqlDbType.VarChar, 50); 
     email.Value = txtEmail.Text.Trim().ToString(); 
     command.Parameters.Add(email); 

     //Create Dataset to store results and DataAdapter to fill Dataset 
     DataSet dsPwd = new DataSet(); 
     SqlDataAdapter dAdapter = new SqlDataAdapter(command); 
     connection.Open(); 
     dAdapter.Fill(dsPwd); 
     connection.Close(); 
     if(dsPwd.Tables[0].Rows.Count > 0) 
     { 

      MailMessage loginInfo = new MailMessage(); 
      loginInfo.To.Add(txtEmail.Text.ToString()); 
      loginInfo.From = new MailAddress("[email protected]"); 
      loginInfo.Subject = "Forgot Password Information"; 

      loginInfo.Body = "Username: " + dsPwd.Tables[0].Rows[0]["UserName"] + "<br /><br />Password: " + dsPwd.Tables[0].Rows[0]["Password"] + "<br /><br />"; 
      loginInfo.IsBodyHtml = true; 
      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "smtp.gmail.com"; 
      smtp.Port = 587; 
      smtp.EnableSsl = true; 
      smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "YourGmailPassword"); 
      smtp.Send(loginInfo); 
      lblMessage.Text = "Password is sent to you email id,you can now <a href='Login.aspx'>Login</a>"; 
     } 
     else 
     { 
      lblMessage.Text = "Email Address Not Registered"; 
     } 

    } 
} 

오류가 발생했습니다. smtpException이 사용자 코드에 의해 처리되지 않았습니다 ... 어떻게 해결합니까?smtpException을 해결하는 방법이 사용자 코드에 의해 처리되지 않았습니다.

+1

에 의해 처리되지 않은입니까? – Tudor

+0

smtp.Send (loginInfo); –

답변

2

간단히 말해서, 그것을 처리하는 사용자 코드를 작성하십시오!

Try..Catch 블록에 익숙하지 않은 경우 예외적 인 (즉, 메일 서버가 오프라인 상태가 됨), 네트워크 연결 문제, 암호 만료).

는 코드는 예외가 가능성이 가장 높은 곳을 제공해야이 라인이 시작되는 원인이

:

smtp.Send(loginInfo); 
+0

여기서 일반적인 조언을 덧붙이면'SqlConnection' /'SqlCommand'와'SqlDataAdapter'가 [using 문]으로 싸여 야합니다 (http://msdn.microsoft.com/en-us/library/yh598w02 (v = vs.80) .aspx). – James

0

당신은 사용자 코드에서 예외를 처리해야합니다

try 
{ 
    smtp.Send(loginInfo); 
} 
catch (Exception ex) 
{ 
    //Handle your exception here 
    lblMessage.Text = "Oeps, something when wrong when we tried to send the email"; 
    return; 
} 
+0

물론 여기에 관련된 타입의 예외를 잡아서 적절히 처리해야합니다 .... – Jamie

0

문제는 당신이다 잘못된 포트 번호를 사용합니다. SSL을 통한 Gmail의 경우 documentation에서 :

Outgoing Mail (SMTP) Server - requires TLS3 or SSL: smtp.gmail.com (use authentication) 
Use Authentication: Yes 
Port for TLS/STARTTLS: 587 
Port for SSL: 465 

당신이 EnableSsl 옵션이 true로 설정 한 것처럼, 당신의 포트 번호 465로 설정해야합니다.

-1

오류 : 보낼 메일 - SMTP 예외는 라인에서 예외가 발생 사용자 코드

if (ModelState.IsValid) 
     { 
      try{ 
      string from = "[email protected]"; 
      using (MailMessage mail = new MailMessage(from, obj.Idemail)) 
      { 
       mail.Subject = "Admin"; 
       mail.Body = "Registration successful!"; 
       mail.IsBodyHtml = false; 
       SmtpClient smtp = new SmtpClient(); 
       smtp.Host = "smtp.gmail.com"; 
       smtp.EnableSsl = true; 
       NetworkCredential networkCredential = new NetworkCredential(from, "pswd"); 
       smtp.UseDefaultCredentials = true; 
       smtp.Credentials = networkCredential; 
       smtp.Port = 587; 
       smtp.Host = "localhost"; 
       smtp.Send(mail); 
       ViewBag.Message = "Password Sent through mail. Please chack password in your account and signup."; 
      } 
      } 
      catch (Exception ex) 
      { 
       ViewBag.Message = "Error occur for sending data"; 
      } 
     } 

     else 
     { 
      return Json("Invalid Information!", JsonRequestBehavior.AllowGet); 
     } 
+1

던져진 예외를 처리하기 위해'try-catch'에서 코드 블록을 래핑하는 것이 맞지만, 이 경우 구성이나 네트워크와 같은 외부 요소와 관련된 문제에 대한 건설적인 해결책을 제공하지 않습니다. –

관련 문제