2016-01-06 3 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 "указывает на правильный идентификатор' txtEmail' – vantian

ответ

2

вы пробовали изменения

ControlToValidate="txtEmailId" 

до

ControlToValidate="txtEmail" 

как сообщение об ошибке предлагает вам?

+3

Также @jeshma как выпускник sof tware engineer, если вы не научитесь читать и понимать сообщения об ошибках, у вас будет очень и очень трудный путь перед вами –

0

На RegularExpressionValidator свойство ControlToValidate настроен для проверки контроля под названием txtEmailId но имя текстового поля является txtEmail.

Изменить

ControlToValidate="txtEmailId"

в

ControlToValidate="txtEmail"

0

Пожалуйста, обновите ваш "жерех: 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> 
Смежные вопросы