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

本文关键字:验证 电子邮件 链接 网站 用户 一个 | 更新日期: 2023-09-27 18:13:58

我是。net编程的初学者,所以请帮助我。
我的问题:当用户订阅网站时,值将被添加到Sql DB中,目前存储在表数据中,它将在订阅时获得"YES"状态消息。但是,问题来了——当他们订阅这个网站时,电子邮件必须通过验证链接发送到订阅者的电子邮件地址。当用户点击此验证链接时,直接要进入网站地址。然后同时在SQL DB中,状态消息必须更改为状态"YES",这是已存储为"NO".
请建议我一些网站/链接,其中有这个问题的完整代码或任何东西,帮助我找到解决方案。

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

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

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

你的问题相当广泛,可能值得你看看asp.net成员系统,可以在这里找到一个步骤- http://msdn.microsoft.com/en-us/library/879kf95c.aspx

至于会员电子邮件的情况,它是在'4 Guys From Rolla'网站上关于会员制度的一系列文章中的一部分- https://web.archive.org/web/20211020153319/https://www.4guysfromrolla.com/articles/062508-1.aspx

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

例如,在你身体的某个地方,你可以使用:

<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
}

看一下这个关于实现注册验证模式的视频,这样你就可以使用类似的方法来完成你的任务