Envoyer Oublie le Mot de passe à l'aide d'E-Mail dans Asp.Net

je suis à l'aide d'un asp.net cadre pour l'envoi d'un oublie le mot de passe par E-Mail.
mais je pense qu'il y a un problème dans mon code.
s'il vous plaît aider .
Le button_click code d'événement est de donner ci-dessous.

        protected void frgtbtn_Click(object sender, EventArgs e)
{
string st = "select E_mail FROM registraion_master WHERE E_mail='" +     Email.Text + "'";
cmd = new SqlCommand(st, sqlcon);
cmd.Connection.Open();
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataSet ds=new DataSet();
sda.Fill(ds);
cmd.Connection.Close();
if(ds.Tables[0].Rows.Count > 0)
{
MailMessage email = new MailMessage();
email.From = new MailAddress(Email.Text); //Enter sender email address.
email.To.Add(Email.Text); //Destination Recipient e-mail address.
email.Subject = "Your Forget Password:"; //Subject for your request.
email.Body = "Hi,Your Password is: " + ds.Tables[0].Rows[0]["Pwd"] + "";
email.IsBodyHtml = true;
//SMTP SERVER DETAILS
SmtpClient smtpc = new SmtpClient("smtp.gmail.com");
smtpc.Port = 587;
smtpc.UseDefaultCredentials = false;
smtpc.EnableSsl = true;
gmail_ID.Text = "[email protected]";//Enter your gmail id here
gmail_pwd.Text="vineet";//Enter your gmail id here
smtpc.Credentials = new   NetworkCredential(gmail_ID.Text,gmail_pwd.Text);
smtpc.Send(email);
string script = @"<script language=""javascript""> alert('Password Has Been Sent.......!!!!!.');
</script>;";
Page.ClientScript.RegisterStartupScript(this.GetType(), "myJScript1", script);
}
else
{
pwdlbl.Text = "This email address is not exist in our Database try again";
}

dans ce code : il y a une exception occour:Colonne 'Pwd' n'appartient pas à la table de la Table.

  • Je soupçonne que vous stocker vos mots de passe en texte brut. Ne pas le faire! s'il vous Plaît lire: mettre en Œuvre récupération de mot de passe des meilleures pratiques Vous devez toujours utiliser les les requêtes paramétrées. Ce type de chaîne de concaténations sont ouvertes de Injection SQL les attaques.
  • N'est-ce pas assez évident que Colonne 'Pwd' est pas dans la table, également comme @SonerGönül dit, Ne pas stocker les mots de passe comme ça
  • oh, et la raison 'Pwd' n'est pas dans le tableau est probablement parce que vous obtenez seulement la colonne E_mail dans votre instruction select, puis de ne pas l'utiliser, ainsi que l'utilisation d'une requête paramétrée avec entrée de texte dans la clause select...
  • En plus de ne pas stocker les mots de passe en texte brut, vous devez également utiliser les les requêtes paramétrées au lieu d'utiliser la concaténation de chaîne de construire votre chaîne sql (WHERE E_mail='" + Email.Text + "')
  • Le serveur SMTP nécessite une connexion sécurisée ou le client n'est pas authentifié. La réponse du serveur est: 5.5.1 Authentification Requise. Cette Erreur se passe... @JamesBarrass ceci est mon propre projet.
  • Où il est dit Colonne 'Pwd' n'appartient pas à la table de la Table cela veut dire que dans l'ensemble de données qui est le résultat d'une instruction select SELECT E_mail FROM. Vous sélectionnez l'E_mail de sorte que seulement le Contenu existe dans le jeu de résultats. Il n'importe pas trop si c'est votre propre projet, mais je voudrais encore vous recommandons de bonnes pratiques.
  • Voir cette réponse pour plus d'informations sur l'erreur d'authentification.

InformationsquelleAutor Anurag Dixit | 2014-09-01