-1
进程加载的链接页面检测到它:传递一些参数与链接,并同时使用C#
- 发送电子邮件至特定的用户和邮件正文中包含独特的联系。
- 同时我需要在该用户的数据库中存储该唯一链接。
- 当用户点击邮件正文中的链接时,我需要打开一个网页,在加载时我需要验证该链接是否与该用户具有相同的链接。
- 如果是,则以重置密码的形式加载页面,否则显示一些无效消息。
在上面的过程中,我只想要一个代码发送user_id和唯一的代码链接,并在ASP.net c#中加载链接页时检测它。
我用GUID
创建独特的链接并成功发送邮件。加载链接页面时,我无法验证用户。 这里是我的代码:
protected void btnRECOVER_PASSWORD_Click(object sender, EventArgs e)
{
SendMail();
}
public void SendMail()
{
login = new NetworkCredential("[email protected]", "password");
client = new SmtpClient("smtp.1and1.com");
client.Port = Convert.ToInt32(25);
client.EnableSsl = true;
client.Credentials = login;
msg = new MailMessage { From = new MailAddress("[email protected]", "nWorks Employee", Encoding.UTF8) };
msg.To.Add(new MailAddress("[email protected]"));
msg.Subject = "Recover Password For Your nWorks Leave Management Account";
msg.CC.Add(new MailAddress("[email protected]"));
// msg.CC.Add(new MailAddress("*************user mail id*************"));
string strBody = string.Empty;
Guid code = Guid.NewGuid();
strBody += "<html><head></head><body><p>Click the following link to recover your password.</p>";
strBody += Environment.NewLine;
strBody += "<form action='' method='POST' name='myForm1'><a href='http://localhost:19343/LoginForm.aspx'>'" + code.ToString() + "'</form><br>";
strBody += "<br/>Thanks.</body></html>";
msg.Body = strBody;
msg.BodyEncoding = Encoding.UTF8;
msg.IsBodyHtml = true;
msg.Priority = MailPriority.Normal;
msg.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
client.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
string userstate = "sending.......";
client.SendAsync(msg, userstate);
string q1 = "insert into RecoverPwdStatus values(101,'" + code.ToString() + "');";
MySqlCommand cmd1 = new MySqlCommand(q1, conn); conn.Open();
MySqlDataReader rdr1 = cmd1.ExecuteReader(); conn.Close();
}
我使用GUID创建唯一链接并成功发送邮件。加载链接页面时,我无法验证用户。 – Dipak
难道你不能只发送一个电子邮件地址作为参数? – christiandev
但是我必须使链接一次使用,所以我会把它放在整个用户的数据库中,并在用户点击链接时删除。如果用户下次点击同一链接,我会检查数据库中是否存在该链接,我将允许他重置密码,否则将显示您已使用相同链接重置密码。用户将不能使用一个链接重新设置密码超过一次。 – Dipak