2016-01-06 44 views
-1

我正在用C#開發一個簡單的登錄頁面。我正在實施忘記密碼鏈接。如果鏈接點擊,我需要發送一個隨機數的電子郵件給相應的用戶。以下是我的代碼有:忘記密碼鏈接發送帶有隨機數的電子郵件

protected void Button1_Click(object sender, EventArgs e) 
{ 
    string username = string.Empty; 
    string password = string.Empty; 
    string constr = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(constr)) 
    { 
     using (SqlCommand cmd = new SqlCommand("SELECT Name, [Password] FROM tbl_Detailstbl WHERE Email_Id = @Email")) 
     { 
      cmd.Parameters.AddWithValue("@Email", txtEmail.Text.Trim()); 
      cmd.Connection = con; 
      con.Open(); 
      using (SqlDataReader sdr = cmd.ExecuteReader()) 
      { 
       if (sdr.Read()) 
       { 
        username= sdr["Name"].ToString(); 
        password = sdr["Password"].ToString(); 
       } 
      } 
      con.Close(); 
     } 
    } 
    if (!string.IsNullOrEmpty(password)) 
    { 
     MailMessage mm = new MailMessage("[email protected]", txtEmail.Text.Trim()); 
     mm.Subject = "Password Recovery"; 
     mm.Body = string.Format("Hi {0},<br /><br />Your password is {1}.<br /><br />Thank You.", username, password); 
     mm.IsBodyHtml = true; 
     SmtpClient smtp = new SmtpClient(); 
     smtp.Host = "smtp.gmail.com"; 
     smtp.EnableSsl = true; 

     smtp.UseDefaultCredentials = false; 
     smtp.Credentials = new NetworkCredential("[email protected]","asfsdfg"); 

     smtp.UseDefaultCredentials = true; 
     smtp.Credentials = NetworkCred; 
     smtp.Port = 587; 
     smtp.Send(mm); 
     lblMessage.ForeColor = Color.Green; 
     lblMessage.Text = "Password has been sent to your email address."; 
    } 
    else 
    { 
     lblMessage.ForeColor = Color.Red; 
     lblMessage.Text = "This email address does not match our records."; 
    } 
} 

HTML代碼:

<form id="form2" runat="server"> 
    <div> 
     <fieldset style="width:380px;"> 
      <legend>Recover Password By Email Or User Name</legend> 
      <table> 
       <tr> 
        <td>UserName : </td> 
        <td> 
         <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
        </td> 
       </tr> 
       <tr> 
       <td colspan="2">&nbsp;&nbsp;OR</td> 
       </tr> 
       <tr> 
        <td>Email Id : </td> 
        <td> 
         <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox><br /> 
         <asp:RegularExpressionValidator ID="revEmailId" runat="server" 
          ErrorMessage="Please enter valid email address" 
          ControlToValidate="txtEmailId" Display="Dynamic" 
          ForeColor="Red" SetFocusOnError="True" 
          ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator> 
        </td> 
       </tr> 
       <tr> 
        <td>&nbsp;</td> 
        <td> 
         <asp:Button ID="Button1" runat="server" Text="Send" onclick="Button1_Click"/> 
        </td> 
       </tr> 
       <tr> 
        <td colspan="2"> 
         <asp:Label ID="lblMessage" runat="server" Text="" OnClick="Button1_Click"></asp:Label> 
        </td> 
       </tr> 
      </table> 
     </fieldset> 

    </div> 
</form> 

我的問題是,當我試圖發送一封電子郵件,我發現了以下錯誤:

Unable to find control id 'txtEmailId' referenced by the 'ControlToValidate' property of 'revEmailId'.

+0

你的標題是不是與你的問題相關,也確保'ControlToValidate =「txtEmailId」'指向正確的ID'txtEmail' – vantian

回答

2

您是否嘗試過改變

ControlToValidate="txtEmailId" 

ControlToValidate="txtEmail" 

作爲錯誤消息是建議您?

+3

@jeshma畢業生軟件tware工程師,如果你沒有學會閱讀和理解錯誤信息,你將面臨一條非常非常艱難的道路 –

0

的RegularExpressionValidator屬性的ControlToValidate被配置爲驗證一個控制稱爲txtEmailId但文本框名稱是txtEmail

變化

ControlToValidate="txtEmailId"

ControlToValidate="txtEmail"

0

請更新您的 「ASP:的RegularExpressionValidator」 控制如下:

<asp:RegularExpressionValidator ID="revEmailId" runat="server" 
           ErrorMessage="Please enter valid email address" 
           ControlToValidate="txtEmail" Display="Dynamic" 
           ForeColor="Red" SetFocusOnError="True" 
           ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator> 
相關問題