2

ユーザーに確認を送信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);
4

3 に答える 3

5

テーブルに列を追加しUsers(1 つあると仮定します) ConfirmationDueDate、ユーザーがクリックしてアカウントを作成してから 48 時間に設定しOKます。ユーザーがリンクをクリックしたときに、現在の時刻がConfirmationDueDate値を過ぎている場合は、アカウント作成ページに戻ります。

于 2012-12-31T18:22:46.643 に答える
0

電子メールがいつ送信されたかをデータベースに記録し、その日付をユーザーがリンクをクリックした日付と比較する必要があります。たとえば、あなたが 2012 年 12 月 31 日 18:22 にメールを送信し、私が 2013 年 1 月 1 日 18:22 にリンクをクリックすると、それはわずか 1 日です。

その DateSent フィールドをチェックする確認ページで実行されるストアド プロシージャまたは asp.net コードにロジックを組み込む必要があります。

編集
特定の日付の前にのみ有効にすることで、リンクを「期限切れ」にします。ユーザーが日付の後にリンクを使用しようとすると、期限切れとして扱い、関連するメッセージを表示します。しかし、データベースに日付を保存する必要があります。最初の提案では、メールを送信した日付を (DateSent フィールドに) 保存し、それと比較するように言いましたが、別の回答では、リンクの有効期限が切れる日付を設定することを提案しています ( ExpiryDate フィールド)。どちらのアプローチも機能しますが、問題のさまざまな端から問題に取り組んでいるだけです。

于 2012-12-31T18:23:38.563 に答える
0

電子メールがいつ送信されたかをデータベースに記録し、その日付をユーザーがリンクをクリックした日付と比較する必要があります。たとえば、あなたが 2012 年 12 月 31 日 18:22 にメールを送信し、私が 2013 年 1 月 1 日 18:22 にリンクをクリックすると、それはわずか 1 日です。

その DateSent フィールドをチェックする確認ページで実行されるストアド プロシージャまたは asp.net コードにロジックを組み込む必要があります。

編集 特定の日付の前にのみ有効にすることで、リンクを「期限切れ」にします。ユーザーが日付の後にリンクを使用しようとすると、期限切れとして扱い、関連するメッセージを表示します。しかし、データベースに日付を保存する必要があります。最初の提案では、メールを送信した日付を (DateSent フィールドに) 保存し、それと比較するように言いましたが、別の回答では、リンクの有効期限が切れる日付を設定することをお勧めします ( ExpiryDate フィールド)。どちらのアプローチも機能しますが、問題のさまざまな端から問題に取り組んでいるだけです。

于 2017-01-12T11:35:49.360 に答える