我对如何使用电子邮件地址获取确切的人员 ID 来重置密码有疑问。所以,从这里我将通过电子邮件向用户发送一个超链接。
SmtpClient client = new SmtpClient();
try
{
SendPasswordResetEmail(u.EmailAddress.ToString(),u.Name.ToString(),UniqueID);
lblMessage.ForeColor = System.Drawing.Color.LimeGreen;
lblMessage.Text = "Email has been successfully sent!";
}
catch (Exception exc)
{
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "ERROR: " + exc.Message;
}
然后这是我给用户的消息内容,以便让他们点击进入超链接。
string emailAddress = txtEmail.Text;
User u=db.Users.Single(x =>
x.EmailAddress == emailAddress);
MailMessage mailMessage = new MailMessage(u.EmailAddress, ToEmail);
StringBuilder sbEmailBody = new StringBuilder();
sbEmailBody.Append("Dear " + u.Name.ToString() + ",<br/><br/>");
sbEmailBody.Append("Please click on the following link to reset your password");
sbEmailBody.Append("<br/>"); sbEmailBody.Append("https://localhost:44305/Registration/ChangePwd.aspx?uid=" + u.Id);
sbEmailBody.Append("<br/><br/>");
sbEmailBody.Append("<b>吹水站</b>");
mailMessage.IsBodyHtml = true;
mailMessage.Body = sbEmailBody.ToString();
mailMessage.Subject = "Reset Your Password";
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);
MailMessage msg = new MailMessage();
msg.To.Add(new MailAddress(txtEmail.Text));
smtpClient.EnableSsl = true;
smtpClient.Send(mailMessage);
那么这是我的 ChangePwd.aspx?uid= 页面
<form id="form1" runat="server">
<div>
<h1>Change password</h1>
</div>
<div>
<asp:Literal ID="litEmailAddress" runat="server"></asp:Literal>
</div>
<div>
<p>Enter new password :
<asp:TextBox ID="txtNewPwd" runat="server" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Please fill in the blank" ControlToValidate="txtNewPwd" CssClass="error" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="txtNewPwd" CssClass="error" ErrorMessage="Password must be between 8-16 characters including at least 1 letter and 1 number" ValidationExpression="((?=.*\d)(?=.*[a-z]).{8,16})"></asp:RegularExpressionValidator>
</p>
</div>
<div>
Re-enter new password:
<asp:TextBox ID="txtRepeatPwd" runat="server" TextMode="Password"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="Please fill in the blank" ControlToValidate="txtRepeatPwd" CssClass="error" Display="Dynamic"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="txtNewPwd" ControlToValidate="txtRepeatPwd" CssClass="error" ErrorMessage="Password and repeat password are not matched"></asp:CompareValidator>
</div>
<p>
<asp:Button ID="btnCancel" runat="server" Text="Cancel" CausesValidation="False" PostBackUrl="~/Registration/Login.aspx" /><asp:Button ID="btnConfirm" runat="server" Text="Confirm" OnClick="btnConfirm_Click" />
</p>
<div>
<p><asp:Label ID="lblSuccess" runat="server" Text=""></asp:Label></p>
<asp:Label ID="lblFailed" runat="server" Text=""></asp:Label>
</div>
</form>
从这里开始,当他们单击指向 ChangePwd.aspx 的超链接进行重置时,我不知道如何获取确切的用户电子邮件地址。然后,我必须更新数据库以存储用户更新后的更改密码。我试图在网上搜索,但缺乏从互联网上获得的资源。请任何人帮忙谢谢。