用户订阅网站时发送带有验证链接的电子邮件

时间:2011-11-10 13:37:44

标签: c# asp.net sql-server

我是.NET编程的初学者,所以请帮助我们 我的问题:当用户订阅该网站时,这些值将被添加到Sql DB中,目前在存储的表数据中,订阅时会收到“YES”状态消息。 但是,这里开始提出问题 - 当他们订阅该网站时,电子邮件必须通过验证链接转到订阅者的电子邮件地址。 当用户点击此验证链接时,直接转到网站地址。 然后在SQL DB中同时将状态消息更改为状态“YES”,即  已存储为“否”。
请建议我一些网站/链接,其中包含此问题的完整代码或任何有助于我找到解决方案的内容。

4 个答案:

答案 0 :(得分:3)

这是使用用户注册的每个服务器端项目中的常见任务。

  1. 当用户在您的站点中注册时,在DB中为他创建一个唯一的确认密钥。这可以是类似网址的安全md5算法。您可以使用其唯一的用户名或电子邮件地址生成确认密钥。
  2. 通过电子邮件发送确认链接,包括参数中的名称和确认密钥。
  3. 在确认页面中,如果确认密钥对于用户名是正确的,请检查数据库。
  4. 更新数据库中的用户以确认。

答案 1 :(得分:1)

您的问题非常广泛,可能值得您查看asp.net会员系统,可在此处找到演练 - http://msdn.microsoft.com/en-us/library/879kf95c.aspx

至于会员电子邮件方案,它是关于'4来自Rolla的网站'会员系统的大量文章的一部分 - http://www.4guysfromrolla.com/articles/062508-1.aspx

答案 2 :(得分:1)

您需要以某些恶意用户无法预测的方式构建验证链接,并决定致电您的网站以非法方式订阅或取消订阅您的用户。

例如,您身体的某个部位可以:

<a href="http://yoursite.com/unsubscribe.aspx?id=userId&token={some-guid-value-stored-in-your-db} > Click here to unsubscribe </a>

你可以像这样发送电子邮件:

private void SendEmail()
{
  string to = "jane@contoso.com";
  string from = "ben@contoso.com";
  MailMessage message = new MailMessage(from, to);
  message.Subject = "Using the new SMTP client.";
  message.Body = @"<a href="http://yoursite.com/unsubscribe.aspx?id=userId&token={some-guid-value-stored-in-your-db} > Click here to unsubscribe </a>";
  message.IsBodyHtml=true; //VERY IMPORTANT
 SmtpClient client = new SmtpClient(server);
 // Credentials are necessary if the server requires the client 
 // to authenticate before it will send e-mail on the client's behalf.
 client.UseDefaultCredentials = true;

  try {
    client.Send(message);
  }  
  catch (Exception ex) {
    Console.WriteLine("Exception caught in CreateTestMessage2(): {0}", 
   ex.ToString() );           
  }
}

unsubscribe.aspx上你会同时读取userid和guid值:

Page_Load
{
    string userid = Request.QueryString["id"];
    string guid = Request.QueryString["token"];

    //Query your database, find user matching this id and token chaning YES for NO to
    //unsbscribe
}

答案 3 :(得分:0)

请查看有关Implement the Registration Verification Pattern的视频,以便您可以使用类似方法完成任务