在ASP.NET中48小时后,确认电子邮件过期



我向我的用户发送确认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);

在您的Users表中添加一列(我假设您有一个名为ConfirmationDueDate),并将其设置为48小时,从用户单击OK创建帐户。当用户单击链接时,如果当前时间已经超过ConfirmationDueDate值,请将它们带回帐户创建页面。

在发送电子邮件时,您需要在数据库中记录,然后将日期与用户单击链接的日期进行比较。因此,例如,您在2012/12/12 18:22发送电子邮件,然后单击2013年1月1日的链接18:22,那只是1天。

您将需要在确认页面上运行的存储过程或ASP.NET代码构建逻辑,该过程检查该日期字段

编辑
您仅在特定日期之前才使其有效来"到期"该链接。如果用户在日期之后尝试使用链接,则将其视为过期并显示相关消息。但是您需要将日期存储在数据库中,在我的原始建议中,我说要存储您发送电子邮件(在日期字段中)的日期并与此相比,另一个答案建议设置链接到期日期(在一个过期的字段)。两种方法都可以起作用,它们只是从问题的不同目的出现问题。

在发送电子邮件时,您需要在数据库中记录,然后将日期与用户单击链接的日期进行比较。因此,例如,您在2012/12/12 18:22发送电子邮件,然后单击2013年1月1日的链接18:22,那只是1天。

您将需要在确认页面上运行的存储过程或ASP.NET代码构建逻辑,该过程检查该日期字段

编辑您仅在特定日期之前才使其有效来"到期"该链接。如果用户在日期之后尝试使用链接,则将其视为过期并显示相关消息。但是您需要将日期存储在数据库中,在我的原始建议中,我说要存储您发送电子邮件(在日期字段中)的日期并与此相比,另一个答案建议设置链接到期日期(在一个过期的字段)。两种方法都可以起作用,它们只是从问题的不同目的出现问题。

相关内容

  • 没有找到相关文章

最新更新