我向用户发送了一封确认email
,当他们点击它时,他们的帐户就会变为有效状态。
我唯一想要的是在48小时后使链接失效,用户可以再次注册username
。有谁能够帮我?
这是我的电子邮件代码:
Session["UserName"] = TextBox_email.Text;
MailMessage msg = new MailMessage();
StringBuilder bodyMsg = new StringBuilder();
MembershipUser user = Membership.CreateUser(TextBox_email.Text, TextBox_Pass.Text, TextBox_email.Text);
Roles.AddUserToRole(TextBox_email.Text, "Author");
user.IsApproved = false;
Membership.UpdateUser(user);
// StringBuilder bodyMsg = new StringBuilder();
Guid userID = (Guid)user.ProviderUserKey;
msg.Subject = "Submission Confirmation";
bodyMsg.Append("<html><head><img src=" + "http://waag.ir/images/header.jpg" + ">" + "<title>CONFIRMATION EMAIL:</title></head><body>");
bodyMsg.Append("<br/>");
string link = string.Format("http://www.waag.ir/Activate.aspx?userID={0}", userID.ToString());
bodyMsg.Append("Dear " + RadioButtonList_Prefix.SelectedItem.Text + " " + name.Text + " " + middle.Text + " " + lastname.Text + ":<br> Thank you for registering with Avestia Publishing manuscript submission system. To confirm and complete your registration, please follow the link below:</br>" + link + "</br>This link is active for 48 hours. If the link is not visited within this time frame, your registration will be discarded and you will need to register again.</br></br></br>Best regards,</br>Avestia Publishing</br>http://avestia.com");
msg.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8");
msg.Priority = MailPriority.High;
msg.Body = bodyMsg.ToString();
msg.IsBodyHtml = true;
msg.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8");
msg.Priority = MailPriority.High;
// msg.ReplyTo = new MailAddress(TextBox2.Text);
msg.From = new MailAddress("goldenstudio@goldenstudio.ir");
msg.To.Add(new MailAddress(TextBox_email.Text));
SmtpClient mailsender = new SmtpClient();
mailsender.Host = "SmtpClient.goldenstudio.ir";
mailsender.Port = 587;
mailsender.EnableSsl = true;
mailsender.Credentials = new System.Net.NetworkCredential("goldenstudio@goldenstudio.ir", "classaspnet");
SmtpClient smtp = new SmtpClient();
//Literal1.Text = "<script>alert(' ')</script>";
smtp.Send(msg);
答案 0 :(得分:5)
在Users
表(我假设您有一个)中添加一个名为ConfirmationDueDate
的列,并将其设置为自用户点击OK
以创建帐户后48小时。当用户点击该链接时,如果当前时间超过ConfirmationDueDate
值,请将其带回帐户创建页面。
答案 1 :(得分:0)
您需要在数据库中记录发送电子邮件的时间,然后将该日期与用户点击链接的日期进行比较。因此,例如,您在2012年12月31日18:22发送电子邮件,然后点击日期为01/01/2013 18:22的链接,那时只有1天。
您需要在存储过程或在检查DateSent字段的确认页面上运行的asp.net代码中构建逻辑
修改强>
只有在特定日期之前使链接有效,才能使链接“过期”。如果用户尝试在日期之后使用该链接,则将其视为已过期并显示相关消息。但是你需要将日期存储在数据库中,在我原来的建议中我说要存储你发送电子邮件的日期(在DateSent字段中)并与之比较,另一个答案建议设置链接过期的日期(在ExpiryDate字段)。任何一种方法都可行,它们只是从问题的不同方面解决问题。
答案 2 :(得分:0)
您需要在数据库中记录发送电子邮件的时间,然后将该日期与用户点击链接的日期进行比较。因此,例如,您在2012年12月31日18:22发送电子邮件,然后点击日期为01/01/2013 18:22的链接,那时只有1天。
您需要在存储过程或在检查DateSent字段的确认页面上运行的asp.net代码中构建逻辑
编辑 你过期&#39;该链接仅在特定日期之前生效。如果用户尝试在日期之后使用该链接,则将其视为已过期并显示相关消息。但是您需要将日期存储在数据库中,在我原来的建议中,我说要存储您发送电子邮件的日期(在DateSent字段中)并与之进行比较,另一个答案建议设置链接过期的日期(在ExpiryDate字段中)。任何一种方法都可行,它们只是从问题的不同方面解决问题。