2011-06-18 5 views
-1

を送信してください...私はパスワードを忘れてしまいました。method.accessデータベースを忘れてしまい、電子メールを送信しようとしています。もし私が多くの経験を持っていないので、あなたが私を助けてくれたら。よろしくお願いします。ログインはユニークです。 C#sql asp.netあなたが私を助けてくれると助けてくれるなら、C#

protected void LinkButton1_Click(object sender, EventArgs e) 
{ 

     var sqlCon = new SqlConnection(System.Configuration.ConfigurationManager. 
      ConnectionStrings["ConnectionString"].ConnectionString); 

     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = sqlCon; 
     cmd.CommandText = "select Password from Person where Login= @Login "; 
     cmd.Connection.Open(); 
     string Password = cmd.ExecuteScalar().ToString(); 
     cmd.Connection.Close(); 
     cmd.Dispose(); 

     SqlCommand cmd1 = new SqlCommand(); 
     cmd1.Connection = sqlCon; 
     cmd1.CommandText = "select e_mail from Person where Login= @Login "; 
     cmd1.Connection.Open(); 
     string e_mail = cmd.ExecuteScalar().ToString(); 
     cmd.Connection.Close(); 
     cmd.Dispose(); 

     if (Login.Text.Equals("@Login")) 
     { 

      Class1 S = new Class1(); 
      S.sendMail(e_mail, "Your Password request", Password); 
      Response.Write("<script>"); 
     } 

} 

答えて

1

まずあなたは1つのコールがSQLの代わりに、2することができます、 は、メール使用SmtpClientを送信するには、この(テストしていません!)

var sqlCon = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
SqlCommand cmd = new SqlCommand("select e_mail, Password from Person where Login= @Login ", sqlCon);    
cmd.Connection.Open();    

cmd.Parameters.Add(new SqlParameter("@Login", Email.Text)); 

string email = "", password = ""; 

using (SqlDataReader sdr = cmd.ExecuteReader()) 
{ 
    while (sdr.Read()) 
    { 
     email = sdr.GetString(0); 
     password = sdr.GetString(1); 
    } 
} 
cmd.Connection.Close(); 
cmd.Dispose(); 



SmtpClient mailClient = new SmtpClient("your smtp"); 
MailMessage mailMessage = new MailMessage(); 
mailMessage.From = new MailAddress("YOU"); 
mailMessage.To.Add(email); 

mailMessage.Subject = "password recovery"; 
mailMessage.Body = "hello " + email + " your password : " + password; 
mailMessage.IsBodyHtml = true; 

mailClient.Send(mailMessage); 
+0

スカラー変数 "@Login"を宣言しなければならないというエラーを出力しています – emilios

+0

これを今試してみましたが、私はパラメータメーターを追加しました.. –

0

のように気にいらを試してみてください。クライアントをWebConfigに設定します。電子メールメッセージを作成するには、MailMessageを使用します。かなり説明する必要があります。

私はあなたのユーザーデータベースがどのように設計されているのかわかりませんが、データを取得するための2つのクエリを持つことは過剰なようです。電子メールとパスワードの両方を返すクエリを作成します。

また、ユーザーのパスワードを暗号化しないことをお勧めします。代わりの解決策(パスワードを返す代わりにパスワードをリセットするなど)を提供することを検討してください。

+0

暗号化された私はデータベースからアクセスしようとしています。 – emilios

関連する問題