当用户订阅一个网站时,发送带有验证链接的电子邮件
本文关键字:验证 电子邮件 链接 网站 用户 一个 | 更新日期: 2023-09-27 18:13:58
我是。net编程的初学者,所以请帮助我。
我的问题:当用户订阅网站时,值将被添加到Sql DB中,目前存储在表数据中,它将在订阅时获得"YES"状态消息。但是,问题来了——当他们订阅这个网站时,电子邮件必须通过验证链接发送到订阅者的电子邮件地址。当用户点击此验证链接时,直接要进入网站地址。然后同时在SQL DB中,状态消息必须更改为状态"YES",这是已存储为"NO".
请建议我一些网站/链接,其中有这个问题的完整代码或任何东西,帮助我找到解决方案。
这是使用用户注册的每个服务器端项目中的常见任务。
- 当用户在您的站点注册时,在数据库中为他创建一个唯一的确认密钥。这可以是一个url安全的md5算法。您可以使用他唯一的用户名或电子邮件地址生成确认密钥。
- 发送确认链接,包括参数中的姓名和确认键。
- 在确认页面中,检查DB的用户名确认键是否正确。
- 在数据库中更新用户以确认。
你的问题相当广泛,可能值得你看看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
}
看一下这个关于实现注册验证模式的视频,这样你就可以使用类似的方法来完成你的任务